Какие есть хорошие способы реализации исключения хвостовых вызовов?

Я написал небольшой интерпретатор схемы на нечестивой смеси C / C ++, но мне еще предстоит реализовать правильные хвостовые вызовы .

Мне известен классический Чейни по алгоритму MTA , но есть ли другие хорошие способы его реализации? Я знаю, что мог бы поместить стек Scheme в кучу, но это все равно не было бы правильным исключением, поскольку стандарт говорит, что нужно поддерживать неограниченное количество активных хвостовых вызовов.

Я также возился с longjmps, но пока Я думаю, что это будет хорошо работать только для не взаимных рекурсивных хвостовых вызовов.

Как основные схемы на основе C реализуют правильную хвостовую рекурсию?

17
задан csl 15 May 2011 в 12:15
поделиться