Мне нужно изменить поведение функции карты, чтобы обеспечить сопоставление не с минимальным размером коллекции, а с максимальным значением и использование нуля для отсутствующих элементов.Изменение поведения карты в Clojure
Стандартное поведение:
(map + [1 2 3] [4 5 6 7 8]) => [5 7 9]
Необходимое поведение:
(map + [1 2 3] [4 5 6 7 8]) => [5 7 9 7 8]
Я написал функцию, чтобы сделать это, но это, кажется, не очень расширяемая с переменным числом аргументов.
(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)))))
Есть ли лучший способ сделать это?
Я опубликовал предполагаемое улучшение [здесь] (http://stackoverflow.com/a/30387354/1562315). – Thumbnail