Я получаю ошибку несвязанной переменной при загрузке этой функции из файла с mit-схемой - PullRequest
0 голосов
/ 17 октября 2018

Я изучаю схему как часть университетского курса.

Я попытался сохранить этот код в файле 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))

Когда я пытаюсь загрузитьэто в схеме, я генерирую несвязанную переменную ошибку для факт-итера:

unbound variable: fact-iter

Из моего понимания кода, "факт-итер" определяетсялокально внутри процедуры «факт», поэтому она должна быть доступна при вызове сразу после ее определения.Прежде чем написать этот вопрос, я также проверил книгу «Структура и интерпретация компьютерных программ», где приведен почти идентичный пример.

Я предполагаю, что либо мое понимание кода совершенно неверно, либо язагружаю файл неправильно, но я не могу понять, что и почему.Кто-нибудь может помочь?

...