Page 1 of 1
How to design a function like Clojure 'iterate'
Posted: Wed Jun 18, 2014 6:30 pm
by ssqq
Following code could make a infinite sequence:
Code: Select all
(define (f)
(begin
(println (inc cnt))
(push (last f) f -1)
(if (> (length f) 3) (pop f 1))))
But it is not lazy list:
How to design a infinite sequence just like iterate and take in Clojure.
(take 10 (iterate inc 5))
Re: How to design a function like Clojure 'iterate'
Posted: Wed Jun 18, 2014 8:18 pm
by rickyboy
How to design a infinite sequence just like iterate and take in Clojure.
(take 10 (iterate inc 5))
Here you go. :)
Code: Select all
> (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 ...
Re: How to design a function like Clojure 'iterate'
Posted: Thu Jun 19, 2014 10:01 am
by ssqq
richyboy, yes, you are right. I think so.
Re: How to design a function like Clojure 'iterate'
Posted: Thu Jun 19, 2014 3:42 pm
by cormullion
Re: How to design a function like Clojure 'iterate'
Posted: Fri Jun 20, 2014 12:51 am
by TedWalther
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.