clojure higher-order functions
-
-
Save wuriyanto48/ab863cd17137b6b405837a2c8dccd301 to your computer and use it in GitHub Desktop.
clojure higher-order functions clj 高阶函数
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(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"]))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment