在Clojure中将one-arg函数组合成一个多arg函数

时间:2012-04-26 14:42:32

标签: clojure function-composition

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

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

我自己实现如下,但我担心它应该已经在标准API中存在类似的内容。

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

2 个答案:

答案 0 :(得分:1)

写这个的其他方式:

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

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

答案 1 :(得分:1)