reduce
trait Collection[A] {
def reduce(op: (A, A) => A): A
}
reduce applies the binary operator op to pairs of elements in this collection until the final result is calculated.
On empty collections this function throws an UnsupportedOperationException exception.