Following code could make a infinite sequence:
(define (f)
(begin
(println (inc cnt))
(push (last f) f -1)
(if (> (length f) 3) (pop f 1))))
But it is not lazy list:
(first (f)) --> not 1
How to design a infinite sequence just like iterate and take in Clojure.
(take 10 (iterate inc 5))
Quote
How to design a infinite sequence just like iterate and take in Clojure.
(take 10 (iterate inc 5))
Here you go. :)
> (sequence 5 14)
(5 6 7 8 9 10 11 12 13 14)
^^ This is just a way of saying, "Why do you want to do that?" newLISP is inherently eager, and doing such a thing in the most straight-forward way is the best. Unless, we are not privy to something ...
richyboy, yes, you are right. I think so.
some previous discussion (//http)
I would do it using a context to store internal state, each call to the context/function would update the state and return it. Look at the implementations of gensym on here for ideas.