评论者:petterik
摘要
我认为调查是否存在具有相同效果的更小补丁是值得的。我看看我能做什么!
目标
问题分类后,尽量减少补丁大小。
问题
some
要求在reduce
中实现reduced
以能够中止减少过程。clojure.core
中有两个reduce实现,即reduce
和reduce1
,其中reduce
实现了reduced
,而reduce1
没有。通过将some
、reduce1
和/或reduce
组合在一起,使some
能够访问实现reduced
的减少函数。
尝试通过(declare reduce)
声明reduce
并没有成功,据我所知(将再次验证这种方法)。
旧方法
由于在位置上some
高于reduce
,因此无法访问,因此专注于实现reduce1
以便于使用reduced
。这需要移动deref、deref-future和一些其他元素,因此产生了一个相当大的补丁。
新的方法
通过以下方式尽量减小补丁大小
1a. 将some
(以及every?
)移至reduce
之下
1b. 将some
(以及every?
)向下移动,将reduce
向上移动。
1c. 将reduce
移至some
(以及every?
)之上。
2. 与reduce
类似创建some
和some1
,其中基于reduce
的some
将位于reduce
之下。
3. ?
我对#2不感兴趣,因为它创建了更多类似于reduce1
函数的复制。我希望能通过#1x获得一个小补丁。