Provide example of coordinated ref update.
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
(def the-world (ref "hello"))
|
||||
(def bizarro-world (ref {}))
|
||||
|
||||
(meditations
|
||||
"In the beginning, there was a word"
|
||||
@@ -20,16 +21,20 @@
|
||||
(alter the-world exclamator))
|
||||
@the-world))
|
||||
|
||||
"Though you should keep transactions as short as possible"
|
||||
(= "better!!!!!!" (letfn [(exclamator [x] (str x "!"))]
|
||||
(dosync
|
||||
(alter the-world ___))
|
||||
@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 ___)))))
|
||||
(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")
|
||||
__))))
|
||||
|
||||
|
Reference in New Issue
Block a user