评论由:petterik发表
摘要
我认为值得调查是否有具有相同效果的更小的补丁。我会看看能做些什么!
目标
由于问题已被分类,尽量减小补丁的大小。
问题
some
需要实现 reduced
在 reduce
中,才能使减少过程终止。在 clojure.core 中有两个 reduce 实现,即 reduce
和 reduce1
,其中 reduce
实现了 reduced
,而 reduce1
没有实现。将 some
、reduce1
和/或 reduce
组合在一起,使得 some
可以访问实现 reduced
的 reduce 函数。
尝试通过 (declare reduce)
声明 reduce
并且它不起作用(将再次验证此方法)。
旧方法
由于在位置上 some
在 reduce
之上且不可访问,因此重点关注让 reduce1
实现 reduced
。这需要移动 deref、deref-future 以及其他一些东西,导致了相当大的补丁。
新的方法
通过以下方式之一最小化补丁大小
1a. 将一些(以及 every?
)移至 reduce
以下
1b. 将一些(以及 every?
)向下移动,并将 reduce
向上移动。
1c. 将 reduce
移至一些(以及 every?
)之上。
2. 创建 some
和 some1
,就像为 reduce
所做的那样,其中基于 reduce
的 some
将在 reduce
之下。
3. ?
我不太喜欢第2种方法,它创建了像 reduce1
一样的函数的更多重复。我希望我们能用第1x来获得一个小补丁。