foldが不変に対して定義される方法を見ていました。Set:
def fold [A1 >: A] (z: A1)(op: (A1, A1) ⇒ A1): A1
ただし、foldLeftは次のように定義されます。
def foldLeft [B] (z: B)(op: (B, A) ⇒ B): B
foldLeftと同じように、foldが返すコレクションのタイプを変更できることを期待していたので、これは少なくとも一見すると奇妙に見えます。
これは、foldLeftとfoldRightが、要素が折りたたまれる順序について何かを保証しているためだと思います。foldによって与えられる保証は何ですか?