使用scalaz进行简单聚合?

使用scalaz进行简单聚合?,scala,scalaz,monoids,Scala,Scalaz,Monoids,下面是我对一个简单聚合的实现 val mapping = Map("AA" -> "A", "AB" -> "A", "B" -> "B") val input = Map("AA" -> 1, "AB" -> 1, "B" -> 1) val output = input.groupBy { case (k, _) => mapping(k) } .mapValues(_.values.sum) 使用sca

下面是我对一个简单聚合的实现

  val mapping = Map("AA" -> "A", "AB" -> "A", "B" -> "B")
  val input = Map("AA" -> 1, "AB" -> 1, "B" -> 1)

  val output = input.groupBy { case (k, _) => mapping(k) }
               .mapValues(_.values.sum)

使用scalaz有更智能的实现吗?

最终得到了这个,利用了一些幺半群


不确定它在内存和/或CPU方面是否更好。

最终得到了这个,撬动了一些幺半群

不确定它在内存和/或CPU方面是否更好

val output = input.toList.map { case (k, v) => Map((mapping(k), v)) }.reduce( _ |+| _)