我刚刚发现:
(null? (car '('() 2 3)))
返回 false ,并且:
(null? (car '(() 2 3)))
返回 true 。
这两种格式有什么区别?
答案 0 :(得分:2)
请记住,'X
只是两个元素列表的缩写:(quote X)
。
所以(car '(() 2 3))
是(car (quote (() 2 3)))
的缩写,而(car '('() 2 3)))
是(car (quote ((quote ()) 2 3)))
的缩写。
由于(quote something)
评估为something
,因此当系统评估(car (quote ((quote ()) 2 3)))
时,评估的第一步将产生:(car ((quote ()) 2 3))
。并且该列表的car
产生其第一个元素,即(quote ())
。
因此它不为null,结果为false。