当我尝试测试空列表时,为什么在 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))))))
当我 运行 下面的代码时,我在下面得到了这个 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))))))