由:ppotter
附件:002-make-PersistentQueue-implement-Asequential.diff
此补丁是 001-make-PersistentQueue-implement-List.diff 的替代方案。
所以我考虑了你提出的关于 ASeq 的建议,但我觉得直接用 PersistentQueue 实现 ISeq 似乎不太合适。
所以我将 ASeq 分成了两部分 -- ASequential,它实现了 j.u.{Collection,List} 并管理 List-equality 和哈希码;以及 ASeq,说实话,它现在似乎没有什么用了。
作为额外的好处,这个补丁还修复了 CLJ-1070,所以我添加了该票据中的测试来证明这一点。它还通过删除所有 equals/hashCode 东西和所有 Collection 东西来整理 PersistentQueue。
(实际上,由于 ASeq 已经实现了 Obj,PersistentQueue 实现 Obj 并不影响使用它。)
我将赞赏对此方法以及它与这里的先前补丁和在 CLJ-1070 上的补丁有何不同之处的评论。