首页 > 解决方案 > Scheme中的'('() 2 3)和'(() 2 3)有什么区别?

问题描述

我刚刚发现,那:

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

返回false,并且:

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

返回true

这两种格式有什么区别?

标签: schemequote

解决方案


请记住,这'X只是两个元素列表的缩写:(quote X).

So(car '(() 2 3))是 的缩写(car (quote (() 2 3))),while(car '('() 2 3)))是 的缩写(car (quote ((quote ()) 2 3)))

由于(quote something)评估为something,当系统评估(car (quote ((quote ()) 2 3)))的第一步评估产生:(car ((quote ()) 2 3))。并且该car列表的 产生它的第一个元素,即(quote ())

所以它不为空,结果为假。


推荐阅读