You can change lists with the
cons function, see
(doc cons) for details
(cons 5 '(1 2 3 4))
You will see that
cons does not change the existing list, it create a new list that contains the number 5 and a link to all the elements of the existing list.
You can also use cons on vectors
(cons 5 [1 2 3 4])
(cons "fish" '("and" "chips")) (conj '(1 2 3 4) 5) (conj [1 2 3 4] 5) ;; Lets define a simple list and give it a name (def list-one '(1 2 3)) ;; the name evaluates to what we expect list-one ;; If we add the number 4 using the cons function, then we ;; get a new list in return, with 4 added to the front (because thats how lists work with cons) (cons 4 list-one) ;; If we want to keep the result of adding to the list, we can assign it a different name (def list-two (cons 4 list-one)) ;; and we get the result we want list-two ;; we can also assing the original name we used for the list to the new list (def list-one (cons 4 list-one)) ;; If we re-evaluate the definition above, then each time we will get an extra ;; number 4 added to the list. list-one ;; Again, this is not changing the original list, we have just moved the name ;; of the list to point to the new list. ;; Any other function working with this data structure before reassigning the name ;; will not be affected by the re-assignment and will use the unchanged list.