Arrays and collections / Arrays

;; A vector is immutable, so there is nothing to copy: sharing the value
;; is already safe, and "changing" it hands back a new vector
(def numbers1 [1 2 3 4 5])
(def numbers2 numbers1)

(def numbers3 (assoc numbers1 0 10))
;; numbers3 is [10 2 3 4 5]

(println numbers1)                          ; [1 2 3 4 5]
(println numbers2)                          ; [1 2 3 4 5] — unaffected
(println numbers3)                          ; [10 2 3 4 5]
(println (identical? numbers1 numbers2))    ; true — the very same object