评论由: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. 将某些(和每个?)移动到 reduce
之下
1b. 将某些(和每个?)向下移动,将 reduce
向上移动。
1c. 将 reduce
移到某些(和每个?)之上。
2. 创建类似于 reduce
的 some
和 some1
,其中基于 reduce
的 some
将位于 reduce
之下。
3. ?
我不喜欢 #2,这会创建更多类似于 reduce1
函数的重复。我希望我们能用 #1x 获得一个小补丁。