clojure-koans/src/koans/16_atoms.clj

34 lines
794 B
Clojure
Raw Normal View History

(ns koan-engine.runner)
(ns koans.16-atoms (:use koan-engine.core))
2011-03-31 12:44:54 +00:00
(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))
2014-01-09 01:14:08 +00:00
"When your expectations are aligned with reality, things proceed that way"
2011-03-31 12:44:54 +00:00
(= :fin (do
(compare-and-set! __ __ __)
2011-10-26 02:55:54 +00:00
@atomic-clock)))