Я искал способ определения 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 гарантируют что-то о порядке, в котором складываются элементы. Какую гарантию дает свертка?