I was wondering why the merge
function doesn't use transients and if there could be a better version of that.
Instead of this:
(defn merge [& maps] (when (some identity maps) (reduce #(conj (or %1 {}) %2) maps)))
we can use transducers to keep the code still easy to read and have better performance:
(defn merge [& maps] (when (some identity maps) (into {} cat maps)))