Несвязанная переменная в схеме Эдвина
Я изучаю Scheme впервые, и для практики я пытаюсь написать программу, которая возвращает список указанной длины со всеми значениями, равными 1. Я использую редактор MIT/GNU Edwin в Windows 10. Вот код, который я набрал:
(define (listlength n)
(if (= n 1)
(list 1)
(append (list 1) (listlength (- n 1)))))
(listlength 5)
Я бы надеялся на C-x C-e
возвращать (1 1 1 1 1)
, но вместо этого я получаю несвязанную ошибку переменной:
;Unbound variable: listlength
;To continue, call RESTART with an option number:
; (RESTART 3) => Specify a value to use instead of listlength.
; (RESTART 2) => Define listlength to a given value.
; (RESTART 1) => Return to read-eval-print level 1.
;Start debugger? (y or n):
Единственная причина, по которой я могу придумать, заключается в том, что мне не нравится, когда я вызываю listlength в определении длины списка, но это должно быть частью того, что делает Scheme Scheme, так что??? Я в недоумении?? Спасибо за любую помощь, вы можете дать мне!
1 ответ
Вы должны проверить, используете ли вы Cx Ce в конце функции. Cx Ce оценит выражение слева от курсора. Или вы можете использовать Mz, который будет оценивать все выражение независимо от того, где находится курсор. Я также новичок в Схеме, и я надеюсь, что ответ поможет вам!