在Clojure中将一个arg函数合并为多个arg函数

在Clojure中将一个arg函数合并为多个arg函数,clojure,function-composition,Clojure,Function Composition,我想知道Clojure中是否有一个习惯用法,将几个单参数函数组合成一个接受向量的新函数。新函数应将第一个函数应用于第一个参数,依此类推 我认为这在很多情况下都很有用。例如,您可能希望使用更简单的一维函数变换点的x、y和z坐标 我将自己实现如下,但恐怕它已经存在于标准API中类似的东西 (defn vector-comp [& fns] (fn [avect] (vec (map #(%1 %2) fns avect)))) 写这封信的其他方式: (defn vector-c

我想知道Clojure中是否有一个习惯用法,将几个单参数函数组合成一个接受向量的新函数。新函数应将第一个函数应用于第一个参数,依此类推

我认为这在很多情况下都很有用。例如,您可能希望使用更简单的一维函数变换点的x、y和z坐标

我将自己实现如下,但恐怕它已经存在于标准API中类似的东西

(defn vector-comp [& fns]
  (fn [avect]
    (vec (map #(%1 %2) fns avect))))

写这封信的其他方式:

(defn vector-comp [& fns]
    #(map apply fns % (repeat nil)))

我99%确信在标准库中没有现成的解决方案(
juxt
是我所知道的最接近的)

注意
(vec…
,而不是
(转换为[…])
。事实上,在Clojure中,转换为vector通常是不必要的-在vector的大多数情况下,序列都是有效的。祝贺[Clojure]徽章.-)