在尝试解决涉及重新实现评估的 4Clojure 问题“通用计算引擎”时,我不小心最终调用了这样的东西:
(apply '/ '(16 8))
而不是预期的:
(apply / '(16 8))
这有返回的令人困惑的副作用8
,这让我觉得我搞砸了我的数学。
后来我在一些调试后意识到了我的错误——/
在尝试调用它之前我没有评估这个符号——所以我意识到clojure.lang.Symbol
必须实现clojure.lang.IFn
. 但是那个实现有什么作用呢?我所能做的就是返回nil
一个参数,或者如果给出第二个参数。