fold
trait Collection[A] { def fold(z: A)(op: (A, A) => A): A }
fold applies the binary operator op to pairs of elements in this collection until the final result is calculated. The zero element z can be used multiple times.
op
z