(let [my-vector [1 2 3 4] my-map {:fred "ethel"} my-list (list 4 3 2 1)] (list (conj my-vector 5) (assoc my-map :ricky "lucy") (conj my-list 5) ;the originals are intact my-vector my-map my-list)) -> ([1 2 3 4 5] {:ricky "lucy", :fred "ethel"} (5 4 3 2 1) [1 2 3 4] {:fred "ethel"} (4 3 2 1)) ;From https://clojure.org/about/functional_programming#_immutable_data_structures