Monix Coeval.memoize дует в стек - PullRequest
0 голосов
/ 08 мая 2018

Определить

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 голосов
/ 07 мая 2019

Недостатком Coeval является то, что вы можете использовать Eval вместо него для рекурсивных записанных вычислений с безопасным стеком таким же образом.

...