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元素
给任意数量的工人。
换句话说,下一次调用不依赖于上一次调用
另一方面,foldLeft
和 foldRight
必须按顺序执行,因为要使 B
参数可用于第二个元素,必须首先计算第一个元素顺序。
不太重要但比较明显的区别:
请注意 fold
的 seed
参数必须与集合中元素的类型相匹配。 foldLeft
和 foldRight
没有这个限制,它们总是 return 类型等于所用种子类型的元素。
我一直在想,为什么 fold and fold[Left|Right] 的签名不同(当然除了名字。
细微但非常重要的区别
fold
可以并行执行,因为可以传递seed元素
给任意数量的工人。
换句话说,下一次调用不依赖于上一次调用
另一方面,foldLeft
和 foldRight
必须按顺序执行,因为要使 B
参数可用于第二个元素,必须首先计算第一个元素顺序。
不太重要但比较明显的区别:
请注意 fold
的 seed
参数必须与集合中元素的类型相匹配。 foldLeft
和 foldRight
没有这个限制,它们总是 return 类型等于所用种子类型的元素。