2

定义

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从递归调用中删除 ,它会起作用(如预期的那样)。为什么?

4

1 回答 1

0

这是 Coeval 的缺点,您可以使用 Eval 代替它以相同的方式进行堆栈安全的递归记忆计算。

于 2019-05-07T04:45:19.303 回答