From 4472aab767b2ea17fb1f7f29b97ea107dff4ca2a Mon Sep 17 00:00:00 2001 From: Colin Jones Date: Sat, 20 Feb 2010 10:30:24 -0500 Subject: [PATCH] adding about lists --- koans/about_lists.clj | 34 +++++++++++++++++++++++++++++++++ koans/path_to_enlightenment.clj | 1 + 2 files changed, 35 insertions(+) create mode 100644 koans/about_lists.clj diff --git a/koans/about_lists.clj b/koans/about_lists.clj new file mode 100644 index 0000000..bc94078 --- /dev/null +++ b/koans/about_lists.clj @@ -0,0 +1,34 @@ +(meditations + "Lists can be expressed by function or a quoted form" + (= '(__) (list 1 2 3 4 5)) + + "They are Clojure seqs (sequences), so they allow access to the first" + (= __ (first '(1 2 3 4 5))) + + "As well as the rest" + (= __ (rest '(1 2 3 4 5))) + + "The rest when nothing is left is empty" + (= __ (rest '(100))) + + "And construction by adding an element to the front is simple" + (= __ (cons :a '(:b :c :d :e))) + + "Conjoining an element to a list can be done in the reverse order" + (= __ (conj '(:a :b :c :d :e) 0)) + + "You can use a list like a stack to get the first element" + (= __ (peek '(:a :b :c :d :e))) + + "Or the others" + (= __ (pop '(:a :b :c :d :e))) + + "But watch out if you try to pop nothing" + (= __ (try + (pop '()) + (catch IllegalStateException e "No dice!"))) + + "The rest of nothing isn't so strict" + (= __ (try + (rest '()) + (catch IllegalStateException e "No dice!")))) diff --git a/koans/path_to_enlightenment.clj b/koans/path_to_enlightenment.clj index 0b7eaf6..a9ed8bf 100644 --- a/koans/path_to_enlightenment.clj +++ b/koans/path_to_enlightenment.clj @@ -13,6 +13,7 @@ pairs))))) (load "about_equalities") +(load "about_lists") (load "about_vectors") (load "about_sets") (load "about_maps")