Haskellには、accumArray
2つのタプルをキーでグループ化し、同じキーで値を減らす関数関数があります。Scalaにはありません。scalazにあるようですが、他の多くのscalaz機能に依存しています。ScalaでaccumArrayを書くためのより良い方法はありますか?haskellのこの関数の詳細はこちら:http://zvon.org/other/haskell/Outputarray/accumArray_f.html
以下は私の実装です。ありがとう。
private def accumArray[A <% Ordered[A], B, C](f: (B, C) => B,
base: B,
bounds: (A, A),
ll: List[(A, C)]): Vector[(A, B)] = {
ll.filter(i => i._1 >= bounds._1 && i._1 <= bounds._2).
groupBy(_._1).
map(e =>
e._1 -> e._2.map(_._2).foldLeft(base)(f)
).
toVector
}