diff --git a/koans/about_functions.clj b/koans/about_functions.clj new file mode 100644 index 0000000..0c5aac3 --- /dev/null +++ b/koans/about_functions.clj @@ -0,0 +1,21 @@ +(defn count-items [& items] + (count items)) + +(meditations + "Functions are often defined before they are used" + (= __ (count-items :a :b :c :d)) + + "But they can also be defined inline" + (= __ ((fn [n] (Math/pow n 10)) 2)) + + "Or using even shorter syntax" + (= __ (#(Math/pow % 10))) + + "Functions can beget others" + (= __ (((fn [] + (fn [a b] (+ a b)))) + 4 5)) + + "Higher-order functions take function arguments" + (= 25 ((fn [f] (f 5)) + (fn [n] (__ __ __))))) diff --git a/koans/path_to_enlightenment.clj b/koans/path_to_enlightenment.clj index e0934f7..745524a 100644 --- a/koans/path_to_enlightenment.clj +++ b/koans/path_to_enlightenment.clj @@ -16,4 +16,5 @@ (load "about_vectors") (load "about_sets") (load "about_maps") +(load "about_functions") (println "You have acheived clojure enlightenment. Namaste.")