Skip to content

Instantly share code, notes, and snippets.

@cgrand cgrand/gist:4655215 forked from anonymous/gist:4655172
Last active Dec 11, 2015

Embed
What would you like to do?
cheap merge-with when you only need lookup
(defn cheap-merge-with
"Merges two maps-as-functions" [f a b]
(memoize (fn this
([k] (this k nil))
([k default]
(let [av (a k this)
bv (b k this)]
(if (identical? this av)
(if (identical? this bv)
default
bv)
(if (identical? this bv)
av
(f av bv))))))))
(defn fold-vec-maps-into-map [coll]
"Provided a reducer, concatenate into a vector.
Note: same as (into [] coll), but parallel."
(let [merge-fn (partial cheap-merge-with into)]
(r/fold (r/monoid merge-fn hash-map) merge-fn coll)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.