当我尝试测试空列表时,为什么在Scheme中出现错误?
问题描述:
当我运行下面的代码时,我得到这个TypeError。我认为这是因为我试图使用“null?”测试一个空列表。为什么会造成错误?当我尝试测试空列表时,为什么在Scheme中出现错误?
TypeError: Cannot read property 'apply' of undefined [NumberLister, NumberLister, NumberLister, NumberLister, NumberLister, car]
(define NumberLister(lambda(numberList)
(if(null? numberList)
(= (+ 1 1) 2)
)
(display (car numberList))
(display "\n")
(NumberLister (cdr numberList))
)
)
(NumberLister '(1 3 5 6))
答
通常,如果需要的组中的表达式begin
形式你不能把一个以上的表达在if
表达的结果或可替换的部分。另外,(= (+ 1 1) 2)
有什么用?只需返回#t
,像这样:
(define NumberLister
(lambda (numberList)
(if (null? numberList)
#t
(begin
(display (car numberList))
(display "\n")
(NumberLister (cdr numberList))))))
您的递归是无条件的 - 请检查您的括号。 – molbdnilo