【问题标题】:Unbound variable in edwin schemeedwin 方案中的未绑定变量
【发布时间】:2017-04-07 03:02:32
【问题描述】:

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

【问题讨论】:

  • 如果您查看堆栈跟踪,错误是在递归调用中发生还是在您的原始调用中发生?
  • 您之前是否使用C-x C-e 评估函数定义?还是您只在(listlength 5) 表格的末尾按了C-x C-e?请参阅manual

标签: recursion scheme lisp edwin


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 2015-06-22
    • 1970-01-01
    相关资源
    最近更新 更多