Функция map
может принимать функцию, которая применяется к нескольким аргументам. Например,
=> (map + [1 2 3] [4 5 6])
(5 7 9)
+
получает два аргумента, по одному от каждой последовательности. Нет соответствующей версии filter
. Вы можете расширить стандарт filter
следующим образом:
(defn filter
([f coll]
(clojure.core/filter f coll))
([f coll & colls]
(filter #(apply f %) (apply map vector (cons coll colls)))))
Например,
=> (filter (comp odd? +) [1 2 3] [4 6 8])
([1 4] [3 8])
Как видите, мы должны каким-то образом представить сохранившиеся последовательности. Я не считаю это убедительным или естественным. Думаю, не стоит этого делать.