Разница между fold и foldLeft или foldRight?

ПРИМЕЧАНИЕ: я использую Scala 2.8 - может ли это быть проблемой?

Почему я не могу использовать функцию fold так же, как foldLeft или foldRight ?

В Set scaladoc говорится, что:

Результатом сворачивания может быть только супертип параметра типа этой параллельной коллекции T .

Но я не вижу параметра типа T в сигнатуре функции:

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

В чем разница между foldLeft-Right и fold ], и как мне использовать последний?

EDIT: Например, как мне написать свертку, чтобы добавить все элементы в список? С foldLeft это будет:

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)(_ + _)
    ^

63
задан Andriy Drozdyuk 20 September 2014 в 23:00
поделиться