foldLeft

trait Collection[A] {
  def foldLeft[B](z: B)(op: (B, A) => B): B
}

foldLeft aplica, da esquerda para a direita, o operador binário op para cada elemento e o resultado da anterior op. A primeira vez que op é aplicada, ela é alimentada com o valor inicial z.

Em coleções vazias, essa função nem aplica op e o valor inicial z é retornado diretamente.