我第一次学习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的定义中调用listlength,但那应该是构成Scheme Scheme的一部分,所以???我不知所措?谢谢你能给我的任何帮助!
答案 0 :(得分:0)
您应该检查在功能结束时是否使用C-x C-e。 C-x C-e将评估光标左侧的表达式。或者您可以使用M-z,它将评估整个表达式,无论光标位于何处。 我也是Scheme的初学者,我希望答案可以帮到你!