小编Dra*_*vic的帖子

Scalaz中State和Free monad的例子

有人可以举例说明如何使用ScalaZ Free monad吗?

例如,如果我有一个简单的State函数并想要应用它10,000次,我会得到StackOverflowError:

def setS(i: Int) :State[List[Int], Unit] = State { l => ( i::l, () ) }

val state = (1 to 10000).foldLeft( put(Nil :List[Int]) ) {
    case (st, i) => st.flatMap(_ => setS(i))
}

state(Nil)
Run Code Online (Sandbox Code Playgroud)

据我所知,Free monad可以帮助避免这种情况.如何使用Free monad重写这段代码,不会导致堆栈溢出?

scala scalaz

6
推荐指数
1
解决办法
883
查看次数

标签 统计

scala ×1

scalaz ×1