19 lines
746 B
Clojure
19 lines
746 B
Clojure
;; Set up a variable that we will pass to a function
|
|
(def the-queen {:name "Elizabeth"
|
|
:title "Your Majesty"
|
|
:address "Buckingham Palace"
|
|
:pets ["Corgi" "Horse"]})
|
|
|
|
;; A function to modify the data
|
|
(defn adopt-pet [person pet]
|
|
"Adds pet to the person's list of pets"
|
|
(update person
|
|
:pets
|
|
#(conj % pet)))
|
|
|
|
;; Calling the function returns a new data structure with the modified pets
|
|
(adopt-pet the-queen "Ferret"); => {:name "Elizabeth":title "Your Majesty" :address "Buckingham Palace" :pets ["Corgi" "Horse" "Ferret]}
|
|
|
|
;; The original data structure is not changed
|
|
the-queen; => {:name "Elizabeth" :title "Your Majesty" :address "Buckingham Palace" :pets ["Corgi" "Horse"]}
|