This video introduces atoms, which are like refs, but provide swap! and compare-and-set! to mutate an atom's value without having to use a dosync transaction.
Here is the 16_atoms.clj source code:
(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)))
This screencast tutorial helps you learn the Clojure programming language. Experience the joy of Clojure in the Light Table IDE as we tour through the Clojure Koans, taking you all the way from Beginner to Intermediate to Advanced.