On 6/27/14, 8:01 AM, Glen Rubin wrote: > I have a list that I want to combine in some way with an incremented list, > so I was trying to write a for expression like this: > > (for [i '(my-list-of-crap), j (iterate inc 0)] (str i j))
the equivalent of this code written using map and mapcat is (mapcat (fn [i] (map (fn [j] (str i j)) (iterate inc 0)))) '(my-list-of-crap)) so for every element of '(my-list-of-crap) you are creating an infinite seq of numbers (iterate inc 0) and creating a string of each element of '(my-list-of-crap) paired with each element of (iterate inc 0), obviously an infinite seq of things, which will certainly take all your memory the main thing to realize is the nesting behaviour of for, and the mechanical translation of for in to an inner call to map wrapped in calls to mapcat > > > The problem with this is that it yields an out of memory area. I assume > this is b/c of my poor use of the iterate fn. How can I do this in a lazy > way? So that iterate only produces as many items as is needed to match the > number of items I have in '(my-list-of-crap). Thanks! > -- And what is good, Phaedrus, And what is not good— Need we ask anyone to tell us these things? -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.