Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Recursion edwin格式中的未绑定变量_Recursion_Scheme_Lisp_Edwin - Fatal编程技术网

Recursion 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

我第一次学习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 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
?看。