定义
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,它就会正常工作(正如预期的那样)。为什么?
发布于 2019-05-07 12:45:19
这是Coeval的缺点,对于堆栈安全的递归内存计算,您可以以同样的方式使用Eval来代替它。
https://stackoverflow.com/questions/50223371
复制相似问题