Scheme 中的'('() 2 3) 和'(() 2 3) 有什么区别?

What is the difference between '('() 2 3) and '(() 2 3) in Scheme?

我刚刚发现:

(null? (car '('() 2 3)))

returns false,并且:

(null? (car '(() 2 3)))

returns .

这两种格式有什么区别?

记住 '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 ()).

所以不为空,结果为假