List 的 fold 和 fold[Right/Left] 方法的签名差异

Difference in signatures of fold and fold[Right/Left] methods of a List

我一直在想,为什么 fold and fold[Left|Right] 的签名不同(当然除了名字。

细微但非常重要的区别

fold可以并行执行,因为可以传递seed元素 给任意数量的工人。

换句话说,下一次调用不依赖于上一次调用

另一方面,foldLeftfoldRight 必须按顺序执行,因为要使 B 参数可用于第二个元素,必须首先计算第一个元素顺序。

不太重要但比较明显的区别:

请注意 foldseed 参数必须与集合中元素的类型相匹配。 foldLeftfoldRight 没有这个限制,它们总是 return 类型等于所用种子类型的元素。