当我运行以下代码时,我得到下面的TypeError。我认为这是因为我试图使用" null?"来测试空列表。为什么会导致错误?
TypeError:无法读取属性' apply'未定义的[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))
答案 0 :(得分:4)
通常,您不能在if
表达式的结果或替代部分中放置多个表达式,如果需要,则以begin
形式对表达式进行分组。另外,(= (+ 1 1) 2)
的用途是什么?只需返回#t
,就像这样:
(define NumberLister
(lambda (numberList)
(if (null? numberList)
#t
(begin
(display (car numberList))
(display "\n")
(NumberLister (cdr numberList))))))