我目前正在通过SICP,我很难理解下面两个表达式之间的区别。假设我们有一个名为lst的列表,两者之间有什么区别?
(null?lst)和(null?(cdr lst))
我知道第一个表达式检查列表是否为空。但是第二个表达式是否也检查相同条件?换句话说,检查列表的其余部分是否为空。
答案 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