Necesito modificar el comportamiento de la función del mapa para proporcionar la asignación no con un tamaño mínimo de colección sino con un máximo y usar cero para los elementos faltantes.Cambiando el comportamiento del mapa en Clojure
comportamiento estándar:
(map + [1 2 3] [4 5 6 7 8]) => [5 7 9]
comportamiento necesario:
(map + [1 2 3] [4 5 6 7 8]) => [5 7 9 7 8]
escribí función para hacer esto, pero no parece muy extensible con varargs.
(defn map-ext [f coll1 coll2]
(let [mx (max (count coll1) (count coll2))]
(map f
(concat coll1 (repeat (- mx (count coll1)) 0))
(concat coll2 (repeat (- mx (count coll2)) 0)))))
¿Hay una manera mejor de hacer esto?
He publicado una mejora putativa [aquí] (http://stackoverflow.com/a/30387354/1562315). – Thumbnail