Works fine either way - this is just since underscores are required in filenames for real projects, so it's something good for folks to get used to.
39 lines
1.1 KiB
Clojure
39 lines
1.1 KiB
Clojure
(def the-world (ref "hello"))
|
|
(def bizarro-world (ref {}))
|
|
|
|
(meditations
|
|
"In the beginning, there was a word"
|
|
(= __ (deref the-world))
|
|
|
|
"You can get the word more succinctly, but it's the same"
|
|
(= __ @the-world)
|
|
|
|
"You can be the change you wish to see in the world."
|
|
(= __ (do
|
|
(dosync (ref-set the-world "better"))
|
|
@the-world))
|
|
|
|
"Alter where you need not replace"
|
|
(= __ (let [exclamator (fn [x] (str x "!"))]
|
|
(dosync
|
|
(alter the-world exclamator)
|
|
(alter the-world exclamator)
|
|
(alter the-world exclamator))
|
|
@the-world))
|
|
|
|
"Don't forget to do your work in a transaction!"
|
|
(= 0 (do __
|
|
@the-world))
|
|
|
|
"Functions passed to alter may depend on the data in the ref"
|
|
(= 20 (do
|
|
(dosync (alter the-world ___))))
|
|
|
|
"Two worlds are better than one"
|
|
(= ["Real Jerry" "Bizarro Jerry"]
|
|
(do
|
|
(dosync
|
|
(ref-set the-world {})
|
|
(alter the-world assoc :jerry "Real Jerry")
|
|
(alter bizarro-world assoc :jerry "Bizarro Jerry")
|
|
__))))
|