Re: How to generate a hash map from a list

2009-08-24 Thread Adrian Cuthbertson
> (defn fzipmap [f col] > "Takes a col, applies f to each element and generates a Note that the args should have come after the doc string! On Tue, Aug 25, 2009 at 6:20 AM, Adrian Cuthbertson wrote: > For completeness we should include a loop/recur pattern; > > (defn fzipmap [f col] >  "Takes a

Re: How to generate a hash map from a list

2009-08-24 Thread Adrian Cuthbertson
For completeness we should include a loop/recur pattern; (defn fzipmap [f col] "Takes a col, applies f to each element and generates a hash map keyed on each element of col." (loop [col (seq col) mp {}] (if col (recur (next col) (assoc mp (first col) (f (first col mp))) user=

Re: How to generate a hash map from a list

2009-08-24 Thread samppi
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=>

Re: How to generate a hash map from a list

2009-08-24 Thread Dragan Djuric
(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 wrote: > Welcome again. > > Here's another way. Not sure if it's any more or less efficient, but it's > the wa

Re: How to generate a hash map from a list

2009-08-24 Thread ztellman
On Aug 23, 5:21 pm, Stan Dyck wrote: > I'm still new to this so bear with me. > > 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

Re: How to generate a hash map from a list

2009-08-24 Thread Garth Sheldon-Coulson
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:1

Re: How to generate a hash map from a list

2009-08-24 Thread Timothy Pratley
(def a [1 2 3]) ; zipmap takes two collections and makes a hash-map user=> (zipmap a (map #(+ 3 %) a)) {3 6, 2 5, 1 4} ; another way is to build up a map starting with empty {} and associating key values user=> (reduce #(assoc %1 %2 (+ 3 %2)) {} a) {3 6, 2 5, 1 4} ; hash-map constructs a map fo

Re: How to generate a hash map from a list

2009-08-23 Thread Stephen C. Gilardi
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 some

How to generate a hash map from a list

2009-08-23 Thread Stan Dyck
I'm still new to this so bear with me. 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? StanD. --~--~-~--~~~--