我正在阅读 1.5 中引入的 clojure reducers,这里是:https ://github.com/clojure/clojure/blob/master/changes.md 。我的理解是,它们是对现有 map/filter/reduce 函数的性能增强。所以如果是这样的话,我想知道为什么它们在一个新的命名空间中,而不是简单地替换现有的 map/reduce/filter 实现。换句话说,我为什么不选择使用新的减速器功能?
编辑:
针对最初的两个答案,这里是一个澄清:
我将在这里引用发行说明:
Reducers 提供了一组用于处理集合的高性能函数。实际的折叠/减少算法是通过被减少的集合指定的。这允许每个集合定义最有效的方法来减少其内容。
这听起来不像新的 map/filter/reduce 函数本质上是并行的。例如,在发行说明中进一步说明:
它包含一个新函数 fold,它是一个并行 reduce+combine
因此,除非发行说明写得不好,否则在我看来,有一个新函数 fold,它是并行的,而其他函数是特定于集合的实现,旨在为特定集合产生尽可能高的性能。我只是误读了这里的发行说明吗?