Monix Coeval.memoize打击了筹码

时间:2018-05-07 22:31:12

标签: scala monix

定义

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,它就可以正常工作(如预期的那样)。为什么呢?

1 个答案:

答案 0 :(得分:0)

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

相关问题