mik*_*era 16 functional-programming function record clojure
假设我有一个"类似函数"的记录,至少在某种意义上它表示可以应用于某些参数的操作.
通过实现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
Run Code Online (Sandbox Code Playgroud)
(是的,我知道我刚刚重新实现了partial...... 的劣质版本......这只是一个例子:-))
制作唱片clojure.lang.IFn的好习惯吗?
这种方法有任何陷阱吗?