2024年 Clojure 状态调查! 中分享您的想法。

欢迎!请参阅 关于 页面了解更多关于其工作方式的信息。

0
编译器

包含相同常数的带引号和非引号的集合/映射字面量会在某些情况下引发重复键异常(正确的行为),而在其他情况下则会静默忽略重复项。

`user=> #{'1 1}

{1}

user=> #{'[] []}
IllegalArgumentException Duplicate key: [] clojure.lang.PersistentHashSet.createWithCheck (PersistentHashSet.java:56)
`

这是因为编译器假设在读取时具有不同元素的字面量将在运行时具有不同的元素。在(quote x)等于 x 的自评估元素中,这不正确。

2 答案

0

评论由:wagjo 发布。

附带包含测试的补丁。

0
参考: https://clojure.atlassian.net/browse/CLJ-1898(由 bronsa 提出)
...