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

欢迎!请访问关于页面以了解更多关于这个网站的信息。

0
Clojure

PersistentQueue实现了Sequential接口,但没有实现java.util.List接口。正如Sequential一样,列表形成了一个相等的分区。这意味着您可能会得到非传递性相等的

(def q (conj clojure.lang.PersistentQueue/EMPTY 1 2 3)) ;=> #user/q (def al (doto (java.util.ArrayList.) (.add 1) (.add 2) (.add 3))) ;=> #user/al (def v [1 2 3]) ;=> #user/v (= al v) ;=> true (= v q) ;=> true (not= al q) ;=> true

这是因为PersistentQueue是Sequential,但不是List,ArrayList是List但不是Sequential,而PersistentVector则是两者都是。

19 答案

0

评论由:jafingerhut

这个问题再次出现,并创建了一个重复的工单CLJ-1374 - 此后关闭为该工单的重复项。只想记录这个问题不仅仅是被原始报告的人遇到的。

0

评论由:jafingerhut

2014年8月1日到2014年8月10日期间,Clojure主要分支之间的一次或多次提交与补丁001-clj-1059-make-persistentqueue-implement-list.diff冲突,补丁不再适用。

0

评论由:jafingerhut

补丁 002-clj-1059-asequential-rebased-to-cached-hasheq-v2.patch 与 002-clj-1059-asequential-rebased-to-cached-hasheq.diff 相同,但于 2018 年 5 月 23 日的最新 Clojure master 版本中应用干净。保留了原始补丁的归属。

0
参考:[CLJ-1059](https://clojure.atlassian.net/browse/CLJ-1059)(由ppotter报告)
...