Несвязанная переменная в схеме Эдвина

Я изучаю 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, который будет оценивать все выражение независимо от того, где находится курсор. Я также новичок в Схеме, и я надеюсь, что ответ поможет вам!

Другие вопросы по тегам