diff --git a/src/koans/lazy_sequences.clj b/src/koans/lazy_sequences.clj new file mode 100644 index 0000000..3a88a53 --- /dev/null +++ b/src/koans/lazy_sequences.clj @@ -0,0 +1,25 @@ +(meditations + "There are a wide range of ways to generate a sequence" + (= __ (range 1 5)) + + "The range starts at the beginning by default" + (= __ (range 5)) + + "It's important to only take what you need from a big sequence" + (= [0 1 2 3 4 5 6 7 8 9] + (take __ (range 100))) + + "You can also limit results by dropping what you don't need" + (= [95 96 97 98 99] + (drop __ (range 100))) + + "Iteration provides an infinite lazy sequence" + (= __ (take 20 (iterate inc 0))) + + "Repetition is key" + (= [:a :a :a :a :a :a :a :a :a :a ] + (repeat 10 __)) + + "Iteration can be used for repetition" + (= (repeat 100 :foo) + (take 100 (iterate ___ :foo)))) diff --git a/src/path_to_answer_sheet.clj b/src/path_to_answer_sheet.clj index ff63017..c44f04a 100644 --- a/src/path_to_answer_sheet.clj +++ b/src/path_to_answer_sheet.clj @@ -90,6 +90,14 @@ "Hello, you silly world." "Hello to this group: Peter, Paul, Mary!" ]} + "lazy_sequences" {"__" [[1 2 3 4] + [0 1 2 3 4] + 10 + 95 + '(range 20) + :a] + "___" ['(fn [x] :foo)]} + "sequence_comprehensions" {"__" [[0 1 2 3 4 5] '(* index index) '(range 10) diff --git a/src/path_to_enlightenment.clj b/src/path_to_enlightenment.clj index 1f08cc9..054e640 100644 --- a/src/path_to_enlightenment.clj +++ b/src/path_to_enlightenment.clj @@ -29,6 +29,7 @@ "conditionals" "higher_order_functions" "runtime_polymorphism" + "lazy_sequences" "sequence_comprehensions" "creating_functions" "recursion"