; Clojure has nothing to copy: a value is immutable and can be shared safely
(defrecord Shape [line-count name])
(def square (->Shape 4 "Square"))
(def square-copy square)
(println (identical? square square-copy)) ; true, one value for two names
; a "changed copy" is a new value built by assoc
(def triangle (assoc square :line-count 3 :name "Triangle"))
(println (:name triangle) (:line-count triangle)) ; Triangle 3
(println (:name square) (:line-count square)) ; Square 4