also (first (drop 100000 (iterate #(doall (map inc %)) (range 10))))
so the better answer is probably - because map is lazy On Thursday, 14 June 2012 23:06:27 UTC+10, Dave Sann wrote: > > I suspect that the answer is the use of partial and the implementation of > iterate > > with (comp vec... you force realisation of the vector > > without this I think you get (partial map (partial map (partial ....) as f > is repeatedly applied > > if you do this, > > (first (drop 100000 (iterate #(apply list (map inc %)) (range 10)))) > > which forces the list to be realised, it wont overflow > > D > > > On Thursday, 14 June 2012 23:00:15 UTC+10, Dave Sann wrote: >> >> ah...but does for 10000 >> >> >> On Thursday, 14 June 2012 22:58:58 UTC+10, Dave Sann wrote: >>> >>> It doesn't overflow for me. >>> >>> >>> user=> (first (drop 1000 (iterate (partial map inc) (range 10)))) >>> (1000 1001 1002 1003 1004 1005 1006 1007 1008 1009) >>> >>> >>> On Thursday, 14 June 2012 22:52:33 UTC+10, vmargioulas wrote: >>>> >>>> Can someone explain why >>>> ... iterating over a sequence cause a stack overflow >>>> (first (drop 1000 (iterate (partial map inc) (range 10)))) -> >>>> java.lang.StackOverflowError >>>> >>>> ...but iterating over a vector works ok? >>>> (first (drop 1000 (iterate (comp vec (partial map inc)) (range 10)))) - >>>> > [1000 1001 1002 1003 1004 1005 1006 1007 1008 1009] >>>> >>> -- 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