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但不是一个列表,ArrayList是一个列表但不是一个Sequential,而PersistentVector两者都是。

19 答案

0 投票

评论由:jafingerhut

再次遇到此问题,并创建了一个重复的工单CLJ-1374,后来关闭为与本工单重复。只是想记录,这个问题也影响到那些最初报告以外的人。

0 投票

评论由:jafingerhut

2014年8月1日至8月10日期间,对Clojure master进行了多次提交,与补丁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报告)
...