Add atoms.
This commit is contained in:
31
src/koans/atoms.clj
Normal file
31
src/koans/atoms.clj
Normal file
@@ -0,0 +1,31 @@
|
||||
(def atomic-clock (atom 0))
|
||||
|
||||
(meditations
|
||||
"Atoms are like refs"
|
||||
(= __ @atomic-clock)
|
||||
|
||||
"You can change at the swap meet"
|
||||
(= __ (do
|
||||
(swap! atomic-clock inc)
|
||||
@atomic-clock))
|
||||
|
||||
"Keep taxes out of this: swapping requires no transaction"
|
||||
(= 5 (do
|
||||
__
|
||||
@atomic-clock))
|
||||
|
||||
"Any number of arguments might happen during a swap"
|
||||
(= __ (do
|
||||
(swap! atomic-clock + 1 2 3 4 5)
|
||||
@atomic-clock))
|
||||
|
||||
"Atomic atoms are atomic"
|
||||
(= __ (do
|
||||
(compare-and-set! atomic-clock 100 :fin)
|
||||
@atomic-clock))
|
||||
|
||||
"When your expectations are aligned with reality things, proceed that way"
|
||||
(= :fin (do
|
||||
(compare-and-set! __ __ __)
|
||||
@atomic-clock))
|
||||
)
|
Reference in New Issue
Block a user