我要通过这个计划教程和第3(制作清单)的人说you should write '() to represent an empty list.但是对于我写的每一个测试,它似乎与使用just一样具有相同的效果().
此外,据我了解,该报价意味着解释器将不计算表达式,但似乎在解释知道之后有什么'符号,因为这样做(cons 1 '())收益率(1),而这样做(cons 1 'abc)的产量(1 . abc),因此它知道'()是一个空的列表,但'abc为不.
一些Scheme实现允许bare ()作为同义词'(),但只有引用的表单是标准的.
至于你的第二个问题:考虑一下
(define abc '(1 2 3))
(define def '(1 2 3))
(cons 0 'abc)
(cons 0 'def)
(cons 0 abc)
(cons 0 def)
Run Code Online (Sandbox Code Playgroud)
在前两个表达式中,abc并且def未进行评估,因此它们保留符号.在后两者中,它们被评估为它们所代表的对象,它们都等于列表(1 2 3).