flatMap

trait Collection[A] {
  def flatMap(f: (A) => Collection[B]): Collection[B]
}

flatMap は、要素ひとつひとつに関数 f を適用してコレクションを作っていき、それらの結果の各要素を使った新しいコレクションを作成します。