; Clojure has no computed properties: it is just a function of the value
(defrecord Square [side])
(defn area [square] (* (:side square) (:side square)))
(defn with-area [square value] (assoc square :side (Math/sqrt value)))
(def square (->Square 2))
(println (area square)) ; 4
(def bigger (with-area square 9))
(println (:side bigger)) ; 3.0