如何在 Scala 中"sum"幺半群值流?



>假设我正在使用 Rng 库进行简单的蒙特卡罗模拟(如那篇文章所示)。

val d      : Rng[Double] = double
val point  : Rng[(Double, Double)] = pair(d, d)
val points = point.stream(1000)
val tests  = points.map(point => if (insideCircle(point)) 1.0 else 0.0)

现在我需要汇总所有tests项目

tests[0] |+| tests[1] |+| tests[2] ... // Rng[Double] is a monoid

我可以用fold做到这一点,但我想使用一些"快捷方式"(如 sum: Seq[M[A]] => M[A] ,其中 M 是幺半群)。scalascalaz有这样的功能吗?

Scalaz 有各种操作,例如 suml,假设有一个Foldable类型类实例用于Stream

最新更新