Potrzebuję zmodyfikować zachowanie funkcji mapy, aby zapewnić odwzorowanie nie przy minimalnym rozmiarze kolekcji, ale z maksymalną wartością i używać zera dla brakujących elementów.Zmiana zachowania mapy w Clojure
standardowe zachowanie:
(map + [1 2 3] [4 5 6 7 8]) => [5 7 9]
Potrzebne zachowanie:
(map + [1 2 3] [4 5 6 7 8]) => [5 7 9 7 8]
napisałem funkcję, aby to zrobić, ale nie wydaje się bardzo rozciągliwe z 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)))))
Czy jest lepszy sposób to zrobić?
Wysłałem domniemane ulepszenie [tutaj] (http://stackoverflow.com/a/30387354/1562315). – Thumbnail