It's obvious that you're looking for:
(def lazy1 (interleave (repeat '+) (range 3)))
but I still haven't figured out why you get: (+0 +1 2) when using iterate!
Jim
On 06/06/12 11:13, Jim - FooBar(); wrote:
From the docs:
clojure.core/iterate
([f x])
Returns a lazy sequence of x, (f x), (f (f x)) etc. f must be free
of side-effects
Your f is NOT free of side-effects...Nonetheless, I would expect (0
+1 +2) instead of (+0 +1 2)!
Can anyone shine some light on this?
Jim
On 06/06/12 10:24, Z.A wrote:
Hi
user=> (def lazy1 (take 3 (iterate #(do (print
"+") (inc %)) 0)))
#'user/lazy1
user=> lazy1
(+0 +1 2)
Why am I not getting (+0 +1 +2) ?
Thanks
Zubair
PS: I am reading chapter 6 of 'The Joy of Clojure' and trying to
understand "rest versus next" , pp 116
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient
with your first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en