Ответ 1
(defn map-all [f & colls]
(lazy-seq
(when (some seq colls)
(cons (apply f (map first colls))
(apply map-all f (map rest colls))))))
(map-all vector [1 2 3] [4 5])
;=> ([1 4] [2 5] [3 nil])
(map vector [1 2 3] [4 5])
даст:
([1 4] [2 5])
Здесь 3 отбрасывается.
Что делать, если я хочу автоматически наложить эти короткие строки на максимальную длину?
например. Какой идиоматический способ, если я хочу получить
([1 4] [2 5] [3 nil])
(defn map-all [f & colls]
(lazy-seq
(when (some seq colls)
(cons (apply f (map first colls))
(apply map-all f (map rest colls))))))
(map-all vector [1 2 3] [4 5])
;=> ([1 4] [2 5] [3 nil])