Cómo usar reduce con mapas en Clojure – Resuelto

La función reduce en Clojure no solo se usa con listas, también podemos aplicarla a mapas para transformar sus claves y valores en un solo resultado acumulado. Esta técnica es útil cuando necesitamos operar sobre una colección de pares clave-valor.

Uso básico de reduce con mapas

Podemos usar reduce para sumar los valores de un mapa:

(reduce (fn [acc [k v]] (+ acc v)) 0 {:a 1 :b 2 :c 3}) ;; 6

Transformar claves y valores en un mapa con reduce

También podemos transformar las claves y valores mientras los reducimos. Aquí un ejemplo que crea un mapa con las claves convertidas a mayúsculas:

(reduce (fn [acc [k v]] (assoc acc (clojure.string/upper-case (name k)) v)) {} {:a 1 :b 2}) ;; {"A" 1, "B" 2}