请在2024 Clojure状态调查!分享您的想法。

欢迎!请参阅关于页面以了解更多信息。

0
Clojure
编辑

在源代码中,我发现Keyword类没有扩展AFn,并且有很多invoke声明,这些可以通过扩展AFn来删除。AFn,我想,就是为此存在的。

那么为什么Keyword不扩展AFn?与Symbol的行为相比,这不应该被视为一个bug吗?
`
(instance? clojure.lang.AFn :asdf)
=> false

(instance? clojure.lang.AFn 'asdf)
=> true
`

1 答案

0

AFn是一个实现细节,所以绝对不应该被视为bug(IFn是这里的公共契约)。首先想到的,我不知道为什么有的扩展AFn,有的没有,这可能需要一些代码考古学的猜测,可能是一样的。但我们通常不会在没有很好的理由的情况下改变正在工作的东西,所以现在没有理由改变这一点。

...