В qaru.site/info/121900/... я дал следующий рекурсивный код:
def retry[T](n: Int)(fn: => T): T = {
try {
fn
} catch {
case e if n > 1 =>
retry(n - 1)(fn)
}
}
Если добавить аннотацию @tailrec
, я получаю:
Не удалось оптимизировать повтор метода @tailrec annotated method: он содержит рекурсивный вызов не в хвостовом положении.
Я смог взломать хвостовую рекурсивную альтернативу, но я все еще удивляюсь, почему это не оптимизировалось. Почему бы и нет?