Я размышлял над вашим вопросом в течение многих лет (хотите верьте, хотите нет ...). Я был так глубоко увлечен этим вопросом, что наконец написал целую статью (которая также представляет собой презентацию одного из моих модулей, который я написал несколько месяцев назад, не тратя времени на точное объяснение того, как это сделать). Если вы все еще заинтересованы в этом вопросе, пожалуйста, прочитайте мой ответ в моем блоге . В двух словах я представляю презентацию модуля tco ; вы не найдете ничего, что уже не можете сделать без устранения хвостовой рекурсии, но вас могут заинтересовать мои мысли об этом.
Я знаю, что простые ссылки не являются предпочтительным использованием в Stackoverflow; однако, пожалуйста, учтите, что я написал целую статью для ответа на этот пост (на которую я ссылаюсь в основной части моей статьи), включая некоторые рисунки для иллюстрации. По этой причине я размещаю здесь этот необычный ответ.