Clojureでは、部分関数を返す関数のアリティを減らしたバージョンを定義すると便利な場合があります。
(defn prefix
([pre string]
(str pre ":" string))
([pre]
(fn [string]
(prefix pre string))))
これは、次のいずれかを実行できることを意味します。
(prefix "foo" 78979)
=> "foo:78979"
((prefix "foo") 78979)
=> "foo:78979"
これはかなりHaskellっぽいようで、partial
部分関数を作成する必要がありません。
しかし、それはLispの優れたコーディングスタイル/ APIデザインと見なされますか?