在她的演讲中,Clojure Bodil 的未来提出了以下主张:
Guy Steele 在 ICFP 上做了一个演讲,名为为并行执行组织功能代码(或 foldl 和 foldr 被认为有轻微危害)(也在ACM 中)。
Guy Steele 在幻灯片 70 中断言:
只要你说“第一
SUM = 0
”,你就被灌输了。累加器不利于并行性。请注意foldl
和foldr
,虽然是功能性的,但从根本上来说是累积性的。
这很有趣。所以 Bodil 说 Guy Steele 是在说一个问题。然后她声称 Rich 用Reducers(和Transducers是这种思路的延续)解决了这个问题。在16:11的 Transducers 演讲中,我们看到 Rich 提到了一些关于foldr
.
- Bird -构造函数式编程讲座(1988 年)
- Hutton -关于 fold 的普遍性和表现力的教程(1999 年)
Rich 有效地表示fold
s 是可组合的——您可以使用它们来构建其他高阶函数,例如map
和filter
。
我的问题是 - Bodil 是对的吗?Rich 解决了 Guy Steele 提出的问题了吗?减速器(在 Clojure 中)是否解决了 Guy Steele 概述的缩放折叠累积问题?