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
}