Хвостовое применение заменяет текущий кадр явного трамплина, поэтому собственная и взаимная хвостовая рекурсия не увеличивает логическое продолжение.
Кратко
LISPEX
(let loop ((n 10000) (acc 0)) (if (= n 0) acc (loop (- n 1) (+ acc 1))))Результат
OUTPUT
10000Текущие гарантии
- Хвостовые позиции включают последние тела, обе ветви
if, нормализованныеcond/case, последниеand/or,do,call-with-valuesиapply. - Правильный хвостовой вызов относится к росту продолжения, а не к одинаковому времени или неограниченному выполнению.
- Даже для хвостовой рекурсии действуют детерминированные профильные пределы ресурсов.
Границы
- Нехвостовая рекурсия может достичь объявленного предела ресурсов.
- Чистая ошибка ресурса не доказывает равенство порогов native и WASM.