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

欢迎!请参阅关于页面以了解更多有关此信息。

0
Collections

目前比较两个不同的seqs需要迭代两个seqs,逐个比较值,忽略seq ab 具有相同的(指针等价)rest的可能性。

提出的补丁在seq尾部添加了一个指针等价检查,这可以使等价短路,如果测试返回true,这对于比较具有共享子seq的大(或可能无限)的seq非常有用。

在此补丁之后,比较如下
(let [x (range)] (= x (cons 0 (rest x))))
现在返回true,而不是当前不终止。

补丁: CLJ-1679-v3.patch

8 答案

0

评论由:michaelblume

当这个测试失败时(它在我的master上失败,但我还有一些其他的发展补丁,我仍在找出冲突在哪里),它会无限期地等待。也许检查未来的等价会更好,并且超时这个未来?

0

评论由:michaelblume

如此 =)

0

评论由:bronsa

有道理,感谢更新后的补丁

0

评论由:michaelblume

嗯,前一个补丁存在一个问题,报告逻辑仍然试图强制序列和内存溢出,这个补丁阻止了这个行为。

0

评论由:michaelblume

好的,看起来 CLJ-1515、CLJ-1603 和这个补丁组合在一起会同时失败,尽管它们中的任意两个都能正常工作。

0

评论由:michaelblume

(实际上这个补丁的来源没问题,它依然很好地优化了结构共享的情况,只是其他两个补丁破坏了结构共享导致的范围问题,所以测试失败了)

0

评论由:bronsa

明白了,如果我们应用这些票证上的补丁,看来我们得修改测试了。

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