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

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

0
Clojure

持久队列实施序列但未实现java.util.List。列表和序列形成等价分区。这意味着您可能会得到非传递性等价。

(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

这是因为持久队列是序列但不是列表,ArrayList是列表但不是序列,而持久向量两者都是。

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