I've been wondering, why there signatures for fold and fold[Left|Right] are different (apart from the name of course.
Asked
Active
Viewed 175 times
1 Answers
4
Subtle and very important difference
fold
can be executed in parallel because the seed element can be passed
to an arbitrary number of workers.
In other words the next invocation does not depend on the last invocation
On the other hand foldLeft
and foldRight
must be executed sequentially because for the B
parameter to be available for the second element it must first be computed for the first element of the sequence.
Less important and more obvious difference:
Note the seed
argument to fold
must match the type of the elements in the collection. foldLeft
and foldRight
don't have this restriction, they will always return an element with type equal to the type of the seed used.

pedromss
- 2,443
- 18
- 24