Skip to content

Commit 7b0680b

Browse files
committed
Added iterate function and tests
1 parent 0b8882e commit 7b0680b

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

pixie/stdlib.pxi

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3072,3 +3072,11 @@ ex: (vary-meta x assoc :foo 42)"
30723072
(swap! cache assoc argsv ret)
30733073
ret)
30743074
val)))))
3075+
3076+
(defn iterate
3077+
{:doc "Returns a lazy sequence of x, (f x), (f (f x)) etc. f must be free of
3078+
side-effects"
3079+
:signatures [[f x]]
3080+
:added "0.1"}
3081+
[f x]
3082+
(lazy-seq (cons x (iterate f (f x)))))

tests/pixie/tests/test-stdlib.pxi

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -761,3 +761,7 @@
761761
(t/deftest test-memoize
762762
(let [f (memoize rand)]
763763
(t/assert= (f) (f))))
764+
765+
(t/deftest test-iterate
766+
(t/assert= (take 5 (iterate inc 5)) '(5 6 7 8 9))
767+
(t/assert= (str (type (iterate inc 1))) "<type pixie.stdlib.LazySeq>"))

0 commit comments

Comments
 (0)