我目前正在通过 SICP,我很难理解下面两个表达式之间的区别。假设我们有一个名为 lst 的列表,两者之间有什么区别:
(空?lst(和(空?(CDR LST((
我知道第一个表达式检查列表是否为空。但是第二个表达式不也检查相同的条件吗?换句话说,检查列表的其余部分是否为空。
不,它们不是一回事,(null? lst)
只是检查lst
是否为空。 而(null? (cdr lst))
检查lst
是否只有一个元素,因为(cdr lst)
返回除第一个元素之外的所有元素lst
。请参阅以下示例。
> (null? '())
#t
> (null? '(1))
#f
> (null? (cdr '(1)))
#t
> (null? (cdr '(1 2)))
#f