On Tue, Dec 7, 2010 at 12:04 AM, Alex Baranosky
<alexander.barano...@gmail.com> wrote:
> I think it will be fun to come up with a solution that will work with n
> maps:
> (defn multi-fmap [f &maps]
>    ...)
> i.e.
> (multi-fmap #(+ %1 %1 %2 ) {:a 1 :b 2} {:a 3 :b 4}) => {:a 5 :b 8}
> (multi-fmap #(+ %1 %2 %3 ) {:a 1 :b 2} {:a 3 :b 4} {:a 5 :b 6}) => {:a 9 :b
> 12}

(defn multi-fmap [f & maps]
  (into {}
    (for [k (keys (first maps))]
      [k (apply f (map #(get % k) maps))])))

works for your two test-cases. It assumes that the keys you're
interested in are exactly the keys of the first map; if any map is
missing a key the function will get a nil argument in the position
corresponding to that map when computing the result's value for that
key.

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