Created
August 29, 2014 04:39
-
-
Save manisnesan/6bc5d90877237700cbf2 to your computer and use it in GitHub Desktop.
Clojure-Lists
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
(ns koans.02-lists | |
(:require [koan-engine.core :refer :all])) | |
(meditations | |
"Lists can be expressed by function or a quoted form" | |
(= '(1 2 3 4 5 ) (list 1 2 3 4 5)) | |
"They are Clojure seqs (sequences), so they allow access to the first" | |
(= 1 (first '(1 2 3 4 5))) | |
"As well as the rest" | |
(= (list 2 3 4 5) (rest '(1 2 3 4 5))) | |
"Count your blessings" | |
(= 3 (count '(dracula dooku chocula))) | |
"Before they are gone" | |
(= 0 (count '())) | |
"The rest, when nothing is left, is empty" | |
(= () (rest '(100))) | |
"Construction by adding an element to the front is easy" | |
(= (list :a :b :c :d :e) (cons :a '(:b :c :d :e))) | |
"Conjoining an element to a list isn't hard either" | |
(= '(:e :a :b :c :d) (conj '(:a :b :c :d) :e)) | |
"You can use a list like a stack to get the first element" | |
(= :a (peek '(:a :b :c :d :e))) | |
"Or the others" | |
(= (list :b :c :d :e) (pop '(:a :b :c :d :e))) | |
"But watch out if you try to pop nothing" | |
(= "No dice!" (try | |
(pop '()) | |
(catch IllegalStateException e | |
"No dice!"))) | |
"The rest of nothing isn't so strict" | |
(= () (try | |
(rest '()) | |
(catch IllegalStateException e | |
"No dice!")))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment