Clojure和Scala都有编写函数/方法(分别为comp
和.compose
)。 Scala有一个方法.andThen
,其工作方式与.compose
相同,只不过它以相反的顺序嵌套函数应用程序。 Clojure中是否存在此函数的类比?
我可以自己轻松地编写它,例如:
(defn and-then [& fns] (apply comp (reverse fns)))
,但它似乎已经足够基本,它必须已经存在,特别是因为在Clojure中它自然地应用于将线程宏表达式转换为无点函数,例如以下两个表达式在一元情况下是等效的:#(->> % a b c)
和(and-then a b c)
答案 0 :(得分:3)
我不认为内置任何内容,可能是因为clojure没有中缀语法(即(and-then f g)
不像f andThen g
那样清晰。正如您已经认识到的那样->
和->>
是其中常用的内容。
答案 1 :(得分:0)
不,Clojure中没有这样的内置功能。你提供的代码示例我相信已经足够了。