Sean,

On Jan 10, 12:29 pm, Sean Devlin <francoisdev...@gmail.com> wrote:
> Conrad,
> What's your use case that requires for and not map?  I haven't seen
> something like this yet, and you've got my curious.

Stumbled across this thread after looking for some CL loop
equivalents. For instance in CL, the loop macro provides,

(loop for x in '(a b c d e)
      for y in '(1 2 3 4 5)
      collect (list x y) )

((A 1) (B 2) (C 3) (D 4) (E 5))

Are there any good (and idiomatic) methods to achieve this using a
Clojure loop construct?

Cheers
Viksit


>
> On Jan 8, 4:41 pm, Conrad <drc...@gmail.com> wrote:
>
>
>
> > Thanks again Sean/Chouser- Sounds like there isn't any easy way to do
> > in-stepiterationusing the "for" construct, as I suspected- This is
> > of course easily remedied for writing a convenience function for "(map
> > vec ...)"
>
> > (As I mentioned in the top post, I am aware the simple example I gave
> > can be written more elegantly without the "for" construct.)
>
> > On Jan 8, 2:07 pm, Sean Devlin <francoisdev...@gmail.com> wrote:
>
> > > Oh, right.  I saw "paralell" and the brain hit autopilot.
>
> > > And I think you CAN improve on your fn a little bit.  This should do
> > > the trick
>
> > > (map + (range 1 5) (range 11 15))
>
> > > The mapping fn itself will be applied to as many arguments as you have
> > > collections.  Since + is variadic, it will do the job nicely.
>
> > > Sean
>
> > > On Jan 8, 11:56 am, Chouser <chou...@gmail.com> wrote:
>
> > > > On Fri, Jan 8, 2010 at 11:34 AM, Sean Devlin <francoisdev...@gmail.com> 
> > > > wrote:
> > > > > Take a look at pmap
>
> > > > I don't think that's the kind of "parallel" being asked about.
>
> > > > > On Jan 8, 11:13 am, Conrad <drc...@gmail.com> wrote:
> > > > >> Looping variables in a clojure "for" loop are iterated in aserial,
> > > > >> cartesian fashion:
>
> > > > >> > (for [a (range 5) b (range 10 15)]
>
> > > > >>        (+ a b))
> > > > >> (10 11 12 13 14 11 12 13 14 15 12 13 14 15 16 13 14 15 16 17 14 15 16
> > > > >> 17 18)
>
> > > > >> I was wondering if there's a standard idiom for looping inparallel
> > > > >> fashion- Doesn't look like it's supported by the "for" macro 
> > > > >> directly.
> > > > >> The best code I can come up with to do this is:
>
> > > > >> > (for [[a b] (map vector (range 5) (range 10 15))]
>
> > > > >>        (+ a b))
> > > > >> (10 12 14 16 18)
>
> > > > >> Is there a more elegant way to do this?
>
> > > > Probably not. 'map' is the primary way to walk multiple seqs in
> > > > step.  'zipmap' does this too, though only for building
> > > > a hash-map.  Of course you can always use recur as well.
>
> > > > --Chouser
> > > > --
> > > > -- I funded Clojure 2010, did you?

-- 
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

Reply via email to