【发布时间】:2015-02-09 05:09:14
【问题描述】:
我正在尝试编写一个在列表中添加数字的程序。但是,当我将输入作为列表提供时,Scheme 不会给我输出。
我的代码如下:
(define (sumlist lst)
(cond ( (pair? lst) (+ (car lst) (sumlist(cdr lst))) )))
为什么会这样?我正在正确地提供输入,即我正在引用列表。
我给出的输入如下:
(sumlist '(1 2 3))
编辑:
我稍微改变了问题。 pair? 'lst 中没有引用该列表,这就是我收到错误的原因。
现在,我没有收到错误。但是,我也没有得到任何输出。
编辑2:
我在pair? lst 中取消引用列表。但是,现在它给了我以下错误: arg2 中的类型错误 #
我已经相应地更新了代码。
【问题讨论】:
-
我认为您不了解函数应用程序是如何在方案语法中表示的。那应该是
(car lst)和(sumlist (cdr lst))。 -
(pair? 'lst)看起来很可疑... -
@leppie 那也是。奇怪的是,直到几分钟前还是
(pair? lst)——OP 编辑了这个问题。 -
我按照你的建议做了。现在错误消失了。但是,我没有得到任何输出。
-
您没有收到错误,因为
(pair? 'lst)始终为假,因此sumlist始终返回#<void>。