当我尝试测试空列表时,为什么在 Scheme 中会出现错误?

Why do I get an error in Scheme when I try to test for an empty list?

当我 运行 下面的代码时,我在下面得到了这个 TypeError。我认为这是因为我正在尝试使用 "null?" 测试空列表。为什么会导致错误?

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))

通常,您不能在 if 表达式的后续部分或替代部分放置多个表达式,如果需要,可以将表达式分组为 begin 形式。另外,(= (+ 1 1) 2)有什么用?只是 return #t,像这样:

(define NumberLister
  (lambda (numberList)
    (if (null? numberList)
        #t
        (begin     
          (display (car numberList))
          (display "\n")
          (NumberLister (cdr numberList))))))