【发布时间】:2023-03-28 07:08:02
【问题描述】:
我正在阅读 1.5 中引入的 clojure reducers,这里是:https://github.com/clojure/clojure/blob/master/changes.md。我的理解是,它们是对现有 map/filter/reduce 函数的性能增强。所以如果是这样的话,我想知道为什么它们在一个新的命名空间中,而不是简单地替换现有的 map/reduce/filter 实现。换句话说,我为什么不选择使用新的 reducers 功能?
编辑:
针对最初的两个答案,这里澄清一下:
我将在这里引用发行说明:
Reducer 提供了一组用于处理集合的高性能函数。实际的折叠/减少算法是通过被减少的集合指定的。这允许每个集合定义最有效的方法来减少其内容。
这听起来不像新的 map/filter/reduce 函数本质上是并行的。例如,在发行说明中进一步说明:
它包含一个新函数 fold,它是一个并行 reduce+combine
因此,除非发行说明写得不好,否则在我看来,有一个新函数 fold,它是并行的,而其他函数是特定于集合的实现,旨在为特定集合产生可能的最高性能.我只是误读了这里的发行说明吗?
【问题讨论】:
-
好问题,尽管“[W]我为什么不选择使用新的 [clojure] reducers 功能”作为一个更好的标题。
-
感谢您的反馈,完成。
-
这可能有助于理解为什么 reducer 不能仅仅替换旧的实现:vimeo.com/45561411
标签: clojure