StreamのGroupByは一度最後まで探す
実装がこうなってるので仕方がない。無限Streamに使うと倒れる。
動作として、GroupByした結果もStreamになって欲しかった気もあります。新しいグループキーが現れたらストリーム増える的に。
def groupBy[K](f: A => K): immutable.Map[K, Repr] = { val m = mutable.Map.empty[K, Builder[A, Repr]] for (elem <- this) { val key = f(elem) val bldr = m.getOrElseUpdate(key, newBuilder) bldr += elem } val b = immutable.Map.newBuilder[K, Repr] for ((k, v) <- m) b += ((k, v.result)) b.result }