clojure-koans/13_creating_functions.clj

31 lines
1,006 B
Clojure
Raw Normal View History

; "One may know what they seek by knowing what they do not seek"
2010-11-17 04:23:33 +00:00
(= [__ __ __] (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"
2010-11-17 04:23:33 +00:00
(= [:wheat "wheat" 'wheat]
2011-10-26 02:55:54 +00:00
(let [not-nil? ___]
(filter not-nil? [nil :wheat nil "wheat" nil 'wheat nil])))
2010-11-17 04:23:33 +00:00
; "Partial functions allow procrastination"
2010-11-17 04:23:33 +00:00
(= 20 (let [multiply-by-5 (partial * 5)]
(___ __)))
; "Don't forget: first things first"
2010-11-17 04:23:33 +00:00
(= [__ __ __ __]
2011-10-26 02:55:54 +00:00
(let [ab-adder (partial concat [:a :b])]
(ab-adder [__ __])))
2010-11-17 04:23:33 +00:00
; "Functions can join forces as one 'composed' function"
2010-11-17 04:23:33 +00:00
(= 25 (let [inc-and-square (comp square inc)]
(inc-and-square __)))
; "Have a go on a double dec-er"
2010-11-17 04:23:33 +00:00
(= __ (let [double-dec (comp dec dec)]
(double-dec 10)))
; "Be careful about the order in which you mix your functions"
2010-11-17 04:23:33 +00:00
(= 99 (let [square-and-dec ___]
(square-and-dec 10)))