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](https://clojure.atlassian.net/browse/CLJ-1898)(由 bronsa 报告)
...