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

问题描述 投票:0回答:1

我刚刚发现:

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

返回false和:

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

返回true

这两种格式有什么区别?

scheme quote
1个回答
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。

© www.soinside.com 2019 - 2024. All rights reserved.