Wonderful; I totally didn't know about zipmap. I've been using into
and map this whole time. Was it added right before Clojure 1.0? It
seems to be a lot faster than using into:

Clojure 1.0.0-
user=> (time (into {} (for [i [1 2 3]] [i (+ 3 i)])) )
"Elapsed time: 0.705 msecs"
{3 6, 2 5, 1 4}
user=> (time (zipmap [1 2 3] (map #(+ 3 %) [1 2 3])))
"Elapsed time: 0.25 msecs"
{3 6, 2 5, 1 4}

On Aug 24, 9:15 am, Dragan Djuric <draga...@gmail.com> wrote:
> (zipmap coll1 coll2) should be faster than (apply hash-map (interleave
> coll1 coll2)) and the doc description hints that's what it was made
> for.
>
> On Aug 24, 8:25 am, Garth Sheldon-Coulson <g...@mit.edu> wrote:
>
>
>
> > Welcome again.
>
> > Here's another way. Not sure if it's any more or less efficient, but it's
> > the way my brain works.
>
> > => (defn map-hashmap [coll f]
> >        (apply hash-map (interleave coll (map f coll))))
> > #'user/map-hashmap
>
> > => (map-hashmap [1 2 3] #(+ % 3))
> > {1 4, 2 5, 3 6}
>
> > On Mon, Aug 24, 2009 at 2:18 AM, Stephen C. Gilardi <squee...@mac.com>wrote:
>
> > > On Aug 23, 2009, at 8:21 PM, Stan Dyck wrote:
>
> > >  I'm still new to this so bear with me.
>
> > > Welcome.
>
> > >  I'm trying to apply a function to a seq-able thing to produce a hashmap.
> > >> So for instance say the function is (inc 3).
> > >> I'd like to write a function that does
>
> > >> [1 2 3] --> {1 4, 2 5, 3 6}
>
> > >> Can someone help me?
>
> > > Here's one way:
>
> > > user=> (into {} (for [i [1 2 3]] [i (+ 3 i)]))
> > > {1 4, 2 5, 3 6}
>
> > > --Steve
--~--~---------~--~----~------------~-------~--~----~
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