评论者:petterik
摘要
我认为值得调查是否存在具有相同效果的更小的补丁。我会尽力做到!
目标
由于问题已经分级,尝试最小化补丁大小。
问题
some
需要 reduce
实现以能够在 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.创建与reduce
相同的一些
和some1
,基于reduce
的some
将位于reduce
下方。
3. ?
我不太喜欢#2,创建了更多像reduce1
那样的函数。我希望我们能得到一个较小的#1x补丁。