Clojureは素晴らしいです、私たちは皆これを知っています、しかしそれはポイントではありません。Haskellのような方法で高階関数を作成および管理する慣用的な方法は何でしょうか。Clojureでは、次のことができます。
(defn sum [a b] (+ a b))
ただし(sum 1)
、関数は返されません。エラーが発生します。もちろん、次のようなことができます。
(defn sum
([a] (partial + a))
([a b] (+ a b)))
この場合:
user=> (sum 1)
#<core$partial$fn__3678 clojure.core$partial$fn__3678@1acaf0ed>
user=> ((sum 1) 2)
3
しかし、それは先に進む正しい方法のようには思えません。何か案は?
私はsum
関数の実装について話しているのではなく、より高いレベルの抽象化について話しているのです。従うべき慣用的なパターンはありますか?いくつかのマクロ?マクロを定義する最良の方法ですか、それとも代替ソリューションがありますか?