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