29. Higher-Order Functions ;; integer as first class value (def a 10) ;; function as first class value (def b (fn [x] (+ x a))) ;; anonymous function #(+ a %) ;; function that generate a closure (def c (fn [x] #(+ x %))) ;; high order function (function as parameter) (def d (fn [f x] (f x a)))
65. State management ;;refs and STM (def a (ref 0)) (def b (ref 1)) (dosync (alter a inc) (alter b + @a)) @a @b ;;atoms (def a (atom 0)) (def b (atom 1)) (swap! a inc) (swap! b + @a) @a @b ;;agents (def a (agent 0)) (def b (agent 1)) (send a inc) (send b + @a) ;;thread local binding (def a 0) (def b 1) (binding [a 100] (+ b a)) a