【发布时间】:2012-04-26 14:42:31
【问题描述】:
我想知道 Clojure 中是否有一个习惯用法,可以将多个单参数函数组合成一个接受向量的新函数。新函数应该将第一个函数应用于第一个参数,依此类推。
我认为这在许多情况下都很有用。例如,您可能希望使用更简单的一维函数来转换点的 x、y 和 z 坐标。
我会自己实现如下,但恐怕标准API中应该已经存在类似的东西了。
(defn vector-comp [& fns]
(fn [avect]
(vec (map #(%1 %2) fns avect))))
【问题讨论】:
-
请注意
(vec ...)而不是(into [] ...)。 -
事实上,在 Clojure 中通常不需要强制转换为向量——序列在大多数情况下都可以使用向量。
标签: clojure function-composition