Публикации по теме 'trampoline'
Исследование NodeJS по функциональному программированию II
Здесь мы рассмотрим рекурсивные функции и технику, называемую батутом, для устранения ограничений стека.
Возьмем из хвостовой рекурсивной факториальной функции:
const fact = (n, acc = 1) =>
(n > 1) ? fact(n - 1, n * acc) : acc;
Дайте определение батуту
const trampoline = fn => {
while(fn instanceof Function) {
fn = fn();
}
return fn;
}
Вы можете видеть, что батут будет зацикливаться, пока рекурсивные вызовы заключены в замыкание.
Использование..