LINUX.ORG.RU

История изменений

Исправление eve, (текущая версия) :

Функции могут ссылаться на предыдущие

Тогда уж let*, а не let. Простой let создаст привязки в контексте, где ни f, ни g ещё не определены, так что g не может сослаться на f, равно как и g на саму себя.

Впрочем, даже если привязки уже есть (в окружении верхнего уровня), это не сработает, т. к. функции f и g все равно останутся в предыдущем окружении, лишь тело let будет в новом окружении. Так что тут нужен letrec.

Исходная версия eve, :

Функции могут ссылаться на предыдущие

Тогда уж let*, а не let. Простой let создаст привязки в контексте, где ни f, ни g ещё не определены, так что g не может сослаться на f, равно как и g на саму себя.