Recursion edwin格式中的未绑定变量
我第一次学习Scheme,为了练习,我试图编写一个程序,返回一个指定长度的列表,所有值都等于1。我正在Windows 10上使用MIT/GNU Edwin编辑器。以下是我键入的代码:Recursion edwin格式中的未绑定变量,recursion,scheme,lisp,edwin,Recursion,Scheme,Lisp,Edwin,我第一次学习Scheme,为了练习,我试图编写一个程序,返回一个指定长度的列表,所有值都等于1。我正在Windows 10上使用MIT/GNU Edwin编辑器。以下是我键入的代码: (define (listlength n) (if (= n 1) (list 1) (append (list 1) (listlength (- n 1))))) (listlength 5) 我希望C-x C-e返回(1),但我得到了一个未绑定变量错误: ;Unbound v
(define (listlength n)
(if (= n 1)
(list 1)
(append (list 1) (listlength (- n 1)))))
(listlength 5)
我希望C-x C-e
返回(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的一部分,所以???我不知所措??谢谢你能给我的任何帮助 您应该检查是否在函数末尾使用C-x C-e。C-x C-e将计算光标左侧的表达式。或者可以使用M-z,它将计算整个表达式,而不管光标在哪里。
我也是方案的初学者,希望答案能对您有所帮助 如果查看堆栈跟踪,错误是发生在递归调用中还是发生在原始调用中?之前是否使用
C-x C-e
评估函数定义?或者您是否只在(列表长度5)
表单的末尾按了C-x C-e
?看。