在麻省理工学院方案中,(null? lst)和(null?(CDR LST))?



我目前正在通过 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

最新更新