This video covers higher order functions, such as map, reduce and filter.
Here is the 08_higher_order_functions.clj source code:
(meditations
"The map function relates a sequence to another"
(= [4 8 12] (map (fn [x] (* 4 x)) [1 2 3]))
"You may create that mapping"
(= [1 4 9 16 25] (map (fn [x] (* x x)) [1 2 3 4 5]))
"Or use the names of existing functions"
(= [false false true false false] (map nil? [:a :b nil :c :d]))
"A filter can be strong"
(= '() (filter (fn [x] false) '(:anything :goes :here)))
"Or very weak"
(= (list :anything :goes :here) (filter (fn [x] true) '(:anything :goes :here)))
"Or somewhere in between"
(= [10 20 30] (filter (fn [x] (< x 31)) [10 20 30 40 50 60 70 80]))
"Maps and filters may be combined"
(= [10 20 30] (map (fn [x] (* 10 x)) (filter (fn [x] (<= x 3)) [1 2 3 4 5 6 7 8])))
"Reducing can increase the result"
(= 24 (reduce (fn [a b] (* a b)) [1 2 3 4]))
"You can start somewhere else"
(= 2400 (reduce (fn [a b] (* a b)) (conj [1 2 3 4] 100)))
"Numbers are not the only things one can reduce"
(= "longest" (reduce (fn [a b]
(if (< 0 1) b a))
["which" "word" "is" "longest"])))
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.
Clojure is a Lisp created by Rich Hickey that runs on the JVM, as an alternative to Java. ClojureScript can target the web browser environment, and node.js, by compiling down to JavaScript, using the Google Closure compiler. Clojure features immutability, functional programming, and being a Lisp, macros.