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

时间:2019-12-06 16:18:00

标签: scheme quote

我刚刚发现:

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

返回 false ,并且:

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

返回 true

这两种格式有什么区别?

1 个答案:

答案 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。