Clojure等效于Scala';然后

Clojure等效于Scala';然后,clojure,Clojure,Clojure和Scala都有组合函数/方法(comp和.compose)。Scala有一个方法,然后是,其工作方式与.compose相同,只是它以相反的顺序嵌套函数应用程序。Clojure中是否存在此功能的类似物 我自己也可以很容易地写出来,例如: (defn然后[&fns](apply comp(reverse fns)),但它似乎足够基本,它必须已经存在,特别是在Clojure中,它在将线程宏表达式转换为无点函数方面有着天然的应用,例如,以下两个表达式在一元情况下是等效的:(>%a b c

Clojure和Scala都有组合函数/方法(
comp
.compose
)。Scala有一个方法
,然后是
,其工作方式与
.compose
相同,只是它以相反的顺序嵌套函数应用程序。Clojure中是否存在此功能的类似物

我自己也可以很容易地写出来,例如:
(defn然后[&fns](apply comp(reverse fns))
,但它似乎足够基本,它必须已经存在,特别是在Clojure中,它在将线程宏表达式转换为无点函数方面有着天然的应用,例如,以下两个表达式在一元情况下是等效的:
(>%a b c)
(然后是abc)
我不认为有任何内置的东西,可能是因为clojure没有中缀语法(即
(然后是fg)
没有
和fg
那么清晰)。正如您已经认识到的那样,
->
->
是它通常使用的功能。

不,Clojure中没有此类内置功能。我相信您提供的代码示例已经足够好了。

我同意
,然后
并不是前缀语言的最佳名称,但我希望Clojure的名称更有意义。线程宏在很多情况下都很好,但在其他情况下,使用返回函数(而不是计算值)的函数(而不是宏)是有益的。看起来很多项目只是用您建议的定义定义了自己的
rcomp