在MIT计划中,(null?lst)和(null?(cdr lst))有什么区别?

时间:2018-10-20 23:47:38

标签: mit-scheme

我目前正在通过SICP,我很难理解下面两个表达式之间的区别。假设我们有一个名为lst的列表,两者之间有什么区别?

(null?lst)和(null?(cdr lst))

我知道第一个表达式检查列表是否为空。但是第二个表达式是否也检查相同条件?换句话说,检查列表的其余部分是否为空。

1 个答案:

答案 0 :(得分:0)

否,它们不是一回事,(null? lst)只是检查lst是否为空。而(null? (cdr lst))检查lst是否只有一个元素,因为(cdr lst)返回lst,除了第一个元素以外的所有内容。请参阅下面的示例。

> (null? '())
#t

> (null? '(1))
#f

> (null? (cdr '(1)))
#t

> (null? (cdr '(1 2)))
#f