Я изучаю схему как часть университетского курса.
Я попытался сохранить этот код в файле fact-iter-001.scm:
(def (fact n)
(def (fact-iter result counter)
(if (> counter n)
result
(fact-iter (* result counter) (+ counter 1))))
(fact-iter 1 1))
Когда я пытаюсь загрузитьэто в схеме, я генерирую несвязанную переменную ошибку для факт-итера:
Из моего понимания кода, "факт-итер" определяетсялокально внутри процедуры «факт», поэтому она должна быть доступна при вызове сразу после ее определения.Прежде чем написать этот вопрос, я также проверил книгу «Структура и интерпретация компьютерных программ», где приведен почти идентичный пример.
Я предполагаю, что либо мое понимание кода совершенно неверно, либо язагружаю файл неправильно, но я не могу понять, что и почему.Кто-нибудь может помочь?