2024年 Clojure 状态调查 中分享您的观点!

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

0
data.int-map

大多数 Clojure 不变 map 和 sets 的实现,在与 java.util.Map 和 java.util.Set 实例(即使是可变的)比较时,如果当前内容相同,则可以返回 true。

提议的补丁以实现对 int sets 和 int maps 的此功能,有一个测试用例表明,对于最新库代码,这不是真的。

我期望在下面的示例 REPL 会话中所有的 .equals 和 = 调用都返回 true。

`
user=> (def jset1 (java.util.HashSet. [1]))

'user/jset1

user=> (def intset1 (imap/int-set [1]))

'user/intset1

user=> (def cset1 #{1})

'user/cset1

user=> (.equals cset1 jset1)
true
user=> (= cset1 jset1)
true
user=> (.equals jset1 cset1)
true
user=> (= jset1 cset1)
true
user=> (.equals intset1 jset1)
false
user=> (= intset1 jset1)
false
user=> (.equals jset1 intset1)
true
user=> (= jset1 intset1)
false
`

2个答案

0

评论由: jafingerhut 提出

Patch dimap-16-v1.patch 是解决此问题的可能方法之一,我相信。它是基于 Clojure 内置的 .equals 和 .equiv 方法对于集合和映射的类似代码,这些方法针对 java.util.Set 和 java.util.Map 接口进行检查,而不是更具体的 clojure.core/set? 和 clojure.core/map?。

0
by
参考: https://clojure.atlassian.net/browse/DIMAP-16 (由 jafingerhut 报告)
...