This video introduces some sleek ways to create functions, with tools such as "complement", function composition and partial application. Clojure really does let you write code in a "point free" style.
Here is the 12_creating_functions.clj source code:
(defn square [x] (* x x)) (meditations "One may know what they seek by knowing what they do not seek" (= [__ __ __] (let [not-a-symbol? (complement symbol?)] (map not-a-symbol? [:a 'b "c"]))) "Praise and 'complement' may help you separate the wheat from the chaff" (= [:wheat "wheat" 'wheat] (let [not-nil? ___] (filter not-nil? [nil :wheat nil "wheat" nil 'wheat nil]))) "Partial functions allow procrastination" (= 20 (let [multiply-by-5 (partial * 5)] (___ __))) "Don't forget: first things first" (= [__ __ __ __] (let [ab-adder (partial concat [:a :b])] (ab-adder [__ __]))) "Functions can join forces as one 'composed' function" (= 25 (let [inc-and-square (comp square inc)] (inc-and-square __))) "Have a go on a double dec-er" (= __ (let [double-dec (comp dec dec)] (double-dec 10))) "Be careful about the order in which you mix your functions" (= 99 (let [square-and-dec ___] (square-and-dec 10))))
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.