Clojure等效于Scala';然后
Clojure和Scala都有组合函数/方法(Clojure等效于Scala';然后,clojure,Clojure,Clojure和Scala都有组合函数/方法(comp和.compose)。Scala有一个方法,然后是,其工作方式与.compose相同,只是它以相反的顺序嵌套函数应用程序。Clojure中是否存在此功能的类似物 我自己也可以很容易地写出来,例如: (defn然后[&fns](apply comp(reverse fns)),但它似乎足够基本,它必须已经存在,特别是在Clojure中,它在将线程宏表达式转换为无点函数方面有着天然的应用,例如,以下两个表达式在一元情况下是等效的:(>%a b c
comp
和.compose
)。Scala有一个方法,然后是
,其工作方式与.compose
相同,只是它以相反的顺序嵌套函数应用程序。Clojure中是否存在此功能的类似物
我自己也可以很容易地写出来,例如:
(defn然后[&fns](apply comp(reverse fns))
,但它似乎足够基本,它必须已经存在,特别是在Clojure中,它在将线程宏表达式转换为无点函数方面有着天然的应用,例如,以下两个表达式在一元情况下是等效的:(>%a b c)和(然后是abc)
我不认为有任何内置的东西,可能是因为clojure没有中缀语法(即(然后是fg)
没有和fg
那么清晰)。正如您已经认识到的那样,->
和->
是它通常使用的功能。不,Clojure中没有此类内置功能。我相信您提供的代码示例已经足够好了。我同意,然后
并不是前缀语言的最佳名称,但我希望Clojure的名称更有意义。线程宏在很多情况下都很好,但在其他情况下,使用返回函数(而不是计算值)的函数(而不是宏)是有益的。看起来很多项目只是用您建议的定义定义了自己的rcomp
。