定义
def memoizeCoeval(n: Int): Coeval[Int] = {
if (n <= 1)
Coeval.now(1)
else
Coeval.defer(memoizeCoeval(n - 1)).map(_ + 1).memoize
}
现在
memoizeCoeval(10000).value
打击堆栈。如果我们从递归调用中删除.memoize
,它就可以正常工作(如预期的那样)。为什么呢?
答案 0 :(得分:0)
这是Coeval的缺点,您可以用Eval代替Eval以相同的方式进行堆栈安全的递归备注计算。