2

假设我正在使用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但我想使用一些“快捷方式”(smth. like sum: Seq[M[A]] => M[A],其中 M 是一个幺半群),而不是。scala有或scalaz有这样的功能吗?

4

1 回答 1

6

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

于 2014-12-11T15:53:21.217 回答