评论者:alexmiller
第一个在这里是一个内联函数,发生在编译过程中,所以它与其它函数略有不同。因为它被内联,所以不能进行规格化。那里的名称部分也是由编译器生成的。根据名称结构的规律性,虽然我不认为这是特别高的优先级,但这一个可能是可修复的。
一旦我们应用 CLJ-2420,后两个将会略有不同
user=> (assoc) 执行错误(ArityException)在 user$eval154/invokeStatic (REPL:1)。传递给:clojure.core/assoc--5406 的参数数量不正确(0)
user=> (dissoc) 执行错误(ArityException)在 user$eval156/invokeStatic (REPL:1)。传递给:clojure.core/dissoc 的参数数量不正确
这里所做的更改实际上是省略所有内部调用栈,并现在报告最顶层的用户调用栈(这里,它发生在 REPL 调用中,但如果它在用户命名空间中,你会看到那个而不是)。
我认为在这两种情况下,你看到的数字是 Clojure 中常用的标准技术,所以问题可能是是否有可能以系统化的方式解决这个问题。函数目前并不携带它们的未混淆名称,因此从类名称解混淆永远不会是一个万无一失的机制。