Diferencia entre fold y foldLeft o foldRight?

NOTA: Estoy en Scala 2.8, ¿puede ser un problema?

Por qué no puedo usar lafold funciona de la misma manera quefoldLeft ofoldRight?

En elSet scaladoc dice que

El resultado del plegado solo puede ser un supertipo del parámetro de tipo de esta colección paralelaT.

Pero no veo ningún parámetro de tipoT en la firma de la función:

def fold [A1 >: A] (z: A1)(op: (A1, A1) ⇒ A1): A1

¿Cuál es la diferencia entre elfoldLeft-Right yfold, y ¿cómo uso este último?

EDIT: Por ejemplo, ¿cómo escribiría un pliegue para agregar todos los elementos en una lista? ConfoldLeft podría ser

val foo = List(1, 2, 3)
foo.foldLeft(0)(_ + _)

// now try fold:
foo.fold(0)(_ + _)
>:7: error: value fold is not a member of List[Int]
  foo.fold(0)(_ + _)
    ^

Respuestas a la pregunta(5)

Su respuesta a la pregunta