lazy list comprehension
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 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! -- 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.
Re: lazy list comprehension
Use map. for produces permutations. Am 27.06.2014 17:02 schrieb Glen Rubin rubing...@gmail.com: 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 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! -- 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. -- 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.
Re: lazy list comprehension
On 27/06/14 17:01, 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)) I would also use map, otherwise try using (range) instead of your iterate. -- 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.
Re: lazy list comprehension
You probably want map-indexed http://clojuredocs.org/clojure_core/1.2.0/clojure.core/map-indexed /L 2014-06-27 17:10 GMT+02:00 Leonardo Borges leonardoborges...@gmail.com: Try using map : (map str '(my-list-of-crap) (iterate inc 0)) -- 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. -- 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.
Re: lazy list comprehension
Try using map : (map str '(my-list-of-crap) (iterate inc 0)) -- 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.
Re: lazy list comprehension
yes, map-indexed seems to make the most sense here. thanks On Friday, June 27, 2014 8:13:53 AM UTC-7, Linus Ericsson wrote: You probably want map-indexed http://clojuredocs.org/clojure_core/1.2.0/clojure.core/map-indexed /L 2014-06-27 17:10 GMT+02:00 Leonardo Borges leonardo...@gmail.com javascript:: Try using map : (map str '(my-list-of-crap) (iterate inc 0)) -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com javascript: Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com javascript: 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+u...@googlegroups.com javascript:. For more options, visit https://groups.google.com/d/optout. -- 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.
Re: lazy list comprehension
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.