Clojure 如何链接多个功能?

Clojure 如何链接多个功能?,clojure,Clojure,我试图在Clojure中链接几个函数: (f4 (f3 (f2 (f1 foo)))) 有什么方便的语法吗?比如: (with-all-of-them foo f1 f2 f3 f4) 有一个: 使用->宏 (-> foo f1 f2 f3 f4) 或减少: (reduce #(%2 %1) foo [f1 f2 f3 f4]) 实际上,您对的所有描述都非常接近comp,除了comp返回一个您必须自己调用的函数外: (f4(f3(f2(f1-foo)))=((comp-f4-f3-

我试图在Clojure中链接几个函数:

(f4 (f3 (f2 (f1 foo))))
有什么方便的语法吗?比如:

(with-all-of-them foo f1 f2 f3 f4)
有一个:


使用
->

(-> foo f1 f2 f3 f4)
减少

(reduce #(%2 %1) foo [f1 f2 f3 f4])

实际上,您对
的所有描述都非常接近
comp
,除了
comp
返回一个您必须自己调用的函数外:

(f4(f3(f2(f1-foo)))
=
((comp-f4-f3-f2-f1)foo)

因此,
使用所有这些
可以实现如下:

(defn with-all-of-them [arg & fs]
   ((apply comp fs) arg))

看看这是否有帮助you@vemv我觉得
->
很可爱。
reduce
选项清楚地显示了操作模式,并且与线程宏不同,它乐于在编译时使用未知的序列。除了Figwheel之外,这是我今天看到的最棒的事情。
(defn with-all-of-them [arg & fs]
   ((apply comp fs) arg))