unfold

object Collection {
  def unfold[A, S](s: S)(f: (S) => Option[(A, S)]): Collection[A]
}

unfold は、関数 fSome に包んだ値を返し続ける限り、その値のペアを使ってコレクションを作成します。 f は現在の状態を受け取り、次の要素と次の状態のペアを計算して返します。

fNone をした時点でコレクションの構築は止まります。

関数 f が始めて適用されるとき、初期状態 s が入力されます。