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

欢迎!请参阅关于页面了解更多关于如何使用本站的信息。

0
Clojure

持久队列实现了Sequential但没有实现java.util.List接口。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日至8月10日之间对Clojure主分支所做的更改与补丁001-clj-1059-make-persistentqueue-implement-list.diff冲突,并且它不再适用。

0

评论:jafingerhut

Patch 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
参考:https://clojure.atlassian.net/browse/CLJ-1059 (由 ppotter 报告)
...