Equalities and Lists koans
This commit is contained in:
parent
cba0d3733f
commit
2668a05427
2 changed files with 23 additions and 23 deletions
|
|
@ -3,34 +3,34 @@
|
|||
|
||||
(meditations
|
||||
"We shall contemplate truth by testing reality, via equality"
|
||||
(= __ true)
|
||||
(= true true)
|
||||
|
||||
"To understand reality, we must compare our expectations against reality"
|
||||
(= __ (+ 1 1))
|
||||
(= 2 (+ 1 1))
|
||||
|
||||
"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"
|
||||
(= __ (= 2 2/1))
|
||||
(= true (= 2 2/1))
|
||||
|
||||
"You cannot generally float to heavens of integers"
|
||||
(= __ (= 2 2.0))
|
||||
(= false (= 2 2.0))
|
||||
|
||||
"But a looser equality is also possible"
|
||||
(= __ (== 2.0 2))
|
||||
(= true (== 2.0 2))
|
||||
|
||||
"Something is not equal to nothing"
|
||||
(= __ (not (= 1 nil)))
|
||||
(= true (not (= 1 nil)))
|
||||
|
||||
"Strings, and keywords, and symbols: oh my!"
|
||||
(= __ (= "hello" :hello 'hello))
|
||||
(= false (= "hello" :hello 'hello))
|
||||
|
||||
"Make a keyword with your keyboard"
|
||||
(= :hello (keyword __))
|
||||
(= :hello (keyword :hello))
|
||||
|
||||
"Symbolism is all around us"
|
||||
(= 'hello (symbol __))
|
||||
(= 'hello (symbol 'hello))
|
||||
|
||||
"When things cannot be equal, they must be different"
|
||||
(not= :fill-in-the-blank __))
|
||||
(not= :fill-in-the-blank "fill-in-the-blank"))
|
||||
|
|
|
|||
|
|
@ -3,43 +3,43 @@
|
|||
|
||||
(meditations
|
||||
"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"
|
||||
(= __ (first '(1 2 3 4 5)))
|
||||
(= 1 (first '(1 2 3 4 5)))
|
||||
|
||||
"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 '(dracula dooku chocula)))
|
||||
(= 3 (count '(dracula dooku chocula)))
|
||||
|
||||
"Before they are gone"
|
||||
(= __ (count '()))
|
||||
(= 0 (count '()))
|
||||
|
||||
"The rest, when nothing is left, is empty"
|
||||
(= __ (rest '(100)))
|
||||
(= '() (rest '(100)))
|
||||
|
||||
"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"
|
||||
(= __ (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"
|
||||
(= __ (peek '(:a :b :c :d :e)))
|
||||
(= :a (peek '(:a :b :c :d :e)))
|
||||
|
||||
"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"
|
||||
(= __ (try
|
||||
(= "No dice!" (try
|
||||
(pop '())
|
||||
(catch IllegalStateException e
|
||||
"No dice!")))
|
||||
|
||||
"The rest of nothing isn't so strict"
|
||||
(= __ (try
|
||||
(= '() (try
|
||||
(rest '())
|
||||
(catch IllegalStateException e
|
||||
"No dice!"))))
|
||||
|
|
|
|||
Loading…
Reference in a new issue