假设我有一条“类似于函数”的记录,至少在某种意义上说它代表可以应用于某些参数的操作。

我可以通过实现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是好的做法吗?

这种方法有什么陷阱吗?

最佳答案

我很惊讶它还没有。记录应该是"a complete implementation of a persistent map"。因此,回答您的问题,我希望它是它的键的功能,就像地图一样。其他任何事情都会令人惊讶。

09-27 11:35