类 / 属性

; 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