如何"总结" Scala中的monoid值流?

时间:2014-12-11 15:30:51

标签: scala random scalaz fold monoids

假设我使用Rng库进行简单的蒙特卡罗模拟(如post)。

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有这样的功能吗?

1 个答案:

答案 0 :(得分:6)

Scalaz有各种ops例如suml,假设Foldable有一个Stream类型类实例。