Я написал небольшой интерпретатор Scheme в нечестивом сочетании C/С++, но мне еще предстоит реализовать правильные хвостовые вызовы.
Я знаю классический Чейни по алгоритму MTA, но есть ли другие хорошие способы его реализации? Я знаю, что могу положить стек Схемы в кучу, но это все равно не будет правильным устранением, поскольку стандарт говорит, что нужно поддерживать неограниченное количество активных хвостовых вызовов.
Я также играл с longjmps, но пока думаю, что он будет хорошо работать только для взаимно-рекурсивных вызовов хвоста.
Как основные схемы на основе C реализуют правильную рекурсию хвоста?