Почему fold имеет следующий тип в Scala?

Я искал способ определения fold для immutable.Set:

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

, но foldLeft определяется как:

def foldLeft [B] (z: B)(op: (B, A) ⇒ B): B 

Это выглядит странно для меня, по крайней мере, на первый взгляд, так как я ожидал, что fold будет может изменить тип возвращаемой коллекции, как и fol dLeft делает.

Я полагаю, это потому, что foldLeft и foldRight гарантируют что-то о порядке, в котором складываются элементы. Какую гарантию дает свертка?

6
задан Henry Henrinson 9 August 2011 в 17:18
поделиться