是否有任何惯用的方法来做一些类似于 - >的事情宏,但有一个动态的功能列表?
即。将向量中的每个函数应用于最后一个函数的输出(所有函数都接受一个参数)
答案 0 :(得分:3)
一个典型的习语是
(reduce #(%2 %) init fns)
例如,
(reduce #(%2 %) 0 [inc #(* 40 %) inc inc])
;=> 42
答案 1 :(得分:2)
您可以使用内置comp功能。你会想要这样的东西:
(defn f [fns & args]
(let [all-fns (apply comp (reverse fns))]
(apply all-fns args)))
并使用它:
(f [+ -] 1 2 3)
; -6