Tag: 高级函数

Clojure中的高阶函数

Clojure真棒,我们都知道,但这不是重点。 我想知道以类似Haskell的方式创build和pipe理高阶函数的惯用方法是什么。 在Clojure中,我可以执行以下操作: (defn sum [ab] (+ ab)) 但是(sum 1)不会返回一个函数:它会导致一个错误。 当然,你可以做这样的事情: (defn sum ([a] (partial + a)) ([ab] (+ ab))) 在这种情况下: user=> (sum 1) #<core$partial$fn__3678 clojure.core$partial$fn__3678@1acaf0ed> user=> ((sum 1) 2) 3 但它似乎不是正确的方式进行。 有任何想法吗? 我不是在讨论实现sum函数,而是在更高的抽象层次上进行交stream。 有没有任何习惯模式? 一些macros? 定义一个macros的最好方法还是有其他解决scheme吗?