Интересно, есть ли идиома в Clojure для объединения нескольких функций аргумента в новую функцию, принимающую вектор. Новая функция должна применять первую функцию к первому аргументу и так далее.Объедините функции одного-arg в мульти-arg один в Clojure
Я думаю, что это полезно в ряде ситуаций. Например, вы можете преобразовать координаты x, y и z точки, используя более простые одномерные функции.
Я бы реализовал сам следующим образом, но я боюсь, что он уже должен существовать в стандартном API.
(defn vector-comp [& fns]
(fn [avect]
(vec (map #(%1 %2) fns avect))))
Примечание '(vec ...)' вместо '(в [] ...)'. – kotarak
Фактически литье к вектору обычно не требуется в Clojure - последовательности работают в большинстве случаев, где выполняется вектор. –