Clojure – mapear fn para mapear

Este fn / macro mapeará uma função para cada valor em um mapa, retornando um mapa contendo as chaves correspondentes para os novos valores.

; As a function, thanks to signalpillar's comment below
(defn map-fn-to-map [f m]

"Maps f to each value of m, returning the corresponding map."

(into {} (for [[k v] m] [k (f v)])))


; As a macro

(defmacro map-fn-to-map [f m]

"Maps f to each value of m, returning the corresponding map."

`(into {} (for [[k# v#] ~m] [k# (~f v#)])))