少なくともいくつかの引数に適用できる操作を表すという意味で、「関数のような」レコードがあるとします。
clojure.lang.IFn
次のような実装を行うことで、関数として機能させることができます。
(defrecord Func [f x]
clojure.lang.IFn
(invoke [this arg]
(f x arg))
(applyTo [this args]
(apply f x args)))
((->Func + 7) 1)
=> 8
(はい、私はちょうど劣ったバージョンのpartial
...を再実装したことを知っています。それは単なる例です:-))
レコードを作成することclojure.lang.IFn
は良い習慣ですか?
このアプローチの落とし穴はありますか?