recursion - edwin 方案中的未绑定(bind)变量

标签 recursion scheme lisp edwin

我是第一次学习 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),但我得到一个未绑定(bind)变量错误:

;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 的一部分,所以???我不知所措??感谢您能给我的任何帮助!

最佳答案

您应该检查是否在函数末尾使用了 C-x C-e。 C-x C-e 将计算光标左侧的表达式。或者你可以使用 M-z ,无论光标在哪里,它都会计算整个表达式。 本人也是Scheme初学者,希望回答对您有所帮助!

关于recursion - edwin 方案中的未绑定(bind)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43268937/

相关文章:

algorithm - 如何写一个scheme程序,以n和sum作为参数,并显示所有可以求和的数字(从1到n)?

list - 如何将文件的内容读入 Lisp 中的列表?

javascript - 递归搜索节点树

c - 由于重复递归而超出堆栈限制

python - 递归查找n维数组的相邻坐标

visual-studio-code - 如何在VS Code中运行scheme程序

scheme - 本文使用哪种方案?

lisp - 为什么 llvm 上没有好的方案/lisp?

windows-7 - LispCabinet 读取行卡住

javascript - 用一组重量平衡秤