我正在尝试编写一个程序,它会在列表中添加数字。但是,当我将输入作为列表时,Scheme不会给我输出。
我的代码如下:
(define (sumlist lst)
(cond ( (pair? lst) (+ (car lst) (sumlist(cdr lst))) )))
为什么会这样?我正在给予输入,即我引用该列表。
我提供的输入如下:
(sumlist '(1 2 3))
编辑:
我稍微改了一下这个问题。该列表未在pair? 'lst
中引用,这就是我收到错误的原因。
现在,我没有收到错误。但是,我也没有得到任何输出。
EDIT2:
我在pair? lst
中取消引用该列表。但是,现在它给了我以下错误:arg2中的错误类型#
我已相应更新了代码。
答案 0 :(得分:2)
car(lst)
应为(car lst)
等。(pair? 'lst)
是错误的,因为你不应该引用这个论点。这将测试符号lst
是否是一对,显然总是假的。0
。把所有这些放在一起,你应该有这个:
(define (sumlist lst)
(if (pair? lst)
(+ (car lst) (sumlist (cdr lst)))
0))
(我还将cond
更改为if
,因为在这种情况下不需要cond
。)