Equalities and Lists koans

This commit is contained in:
Jesus Zambrano 2015-08-28 21:49:56 -04:00
parent cba0d3733f
commit 2668a05427
2 changed files with 23 additions and 23 deletions

View file

@ -3,34 +3,34 @@
(meditations (meditations
"We shall contemplate truth by testing reality, via equality" "We shall contemplate truth by testing reality, via equality"
(= __ true) (= true true)
"To understand reality, we must compare our expectations against reality" "To understand reality, we must compare our expectations against reality"
(= __ (+ 1 1)) (= 2 (+ 1 1))
"You can test equality of many things" "You can test equality of many things"
(= (+ 3 4) 7 (+ 2 __)) (= (+ 3 4) 7 (+ 2 5))
"Some things may appear different, but be the same" "Some things may appear different, but be the same"
(= __ (= 2 2/1)) (= true (= 2 2/1))
"You cannot generally float to heavens of integers" "You cannot generally float to heavens of integers"
(= __ (= 2 2.0)) (= false (= 2 2.0))
"But a looser equality is also possible" "But a looser equality is also possible"
(= __ (== 2.0 2)) (= true (== 2.0 2))
"Something is not equal to nothing" "Something is not equal to nothing"
(= __ (not (= 1 nil))) (= true (not (= 1 nil)))
"Strings, and keywords, and symbols: oh my!" "Strings, and keywords, and symbols: oh my!"
(= __ (= "hello" :hello 'hello)) (= false (= "hello" :hello 'hello))
"Make a keyword with your keyboard" "Make a keyword with your keyboard"
(= :hello (keyword __)) (= :hello (keyword :hello))
"Symbolism is all around us" "Symbolism is all around us"
(= 'hello (symbol __)) (= 'hello (symbol 'hello))
"When things cannot be equal, they must be different" "When things cannot be equal, they must be different"
(not= :fill-in-the-blank __)) (not= :fill-in-the-blank "fill-in-the-blank"))

View file

@ -3,43 +3,43 @@
(meditations (meditations
"Lists can be expressed by function or a quoted form" "Lists can be expressed by function or a quoted form"
(= '(__ __ __ __ __) (list 1 2 3 4 5)) (= '(1 2 3 4 5) (list 1 2 3 4 5))
"They are Clojure seqs (sequences), so they allow access to the first" "They are Clojure seqs (sequences), so they allow access to the first"
(= __ (first '(1 2 3 4 5))) (= 1 (first '(1 2 3 4 5)))
"As well as the rest" "As well as the rest"
(= __ (rest '(1 2 3 4 5))) (= '(2 3 4 5) (rest '(1 2 3 4 5)))
"Count your blessings" "Count your blessings"
(= __ (count '(dracula dooku chocula))) (= 3 (count '(dracula dooku chocula)))
"Before they are gone" "Before they are gone"
(= __ (count '())) (= 0 (count '()))
"The rest, when nothing is left, is empty" "The rest, when nothing is left, is empty"
(= __ (rest '(100))) (= '() (rest '(100)))
"Construction by adding an element to the front is easy" "Construction by adding an element to the front is easy"
(= __ (cons :a '(:b :c :d :e))) (= '(:a :b :c :d :e) (cons :a '(:b :c :d :e)))
"Conjoining an element to a list isn't hard either" "Conjoining an element to a list isn't hard either"
(= __ (conj '(:a :b :c :d) :e)) (= '(:e :a :b :c :d) (conj '(:a :b :c :d) :e))
"You can use a list like a stack to get the first element" "You can use a list like a stack to get the first element"
(= __ (peek '(:a :b :c :d :e))) (= :a (peek '(:a :b :c :d :e)))
"Or the others" "Or the others"
(= __ (pop '(:a :b :c :d :e))) (= '(:b :c :d :e) (pop '(:a :b :c :d :e)))
"But watch out if you try to pop nothing" "But watch out if you try to pop nothing"
(= __ (try (= "No dice!" (try
(pop '()) (pop '())
(catch IllegalStateException e (catch IllegalStateException e
"No dice!"))) "No dice!")))
"The rest of nothing isn't so strict" "The rest of nothing isn't so strict"
(= __ (try (= '() (try
(rest '()) (rest '())
(catch IllegalStateException e (catch IllegalStateException e
"No dice!")))) "No dice!"))))