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.