为什么(quote '"foo")
会通过Scheme解释器?根据如何在Scheme中构造表达式,它在语法上应该是冗余的或错误的。只要有人想要使用符号而没有使用Scheme认为它是变量而字符串不是 valid symbols,那么quote
用于quote
运算符的缩写在作为字符串前缀时有效吗?奇怪的是(quote '"foo")
返回(quote "foo")
。 冗余?
另一个奇怪的实验(symbol? '"foo")
被评估为#f
,以便证明所引用的字符串仍然不是符号(如果引用在语句中以这种方式工作)。那么,'
是否在字符串上被忽略或者它在其他地方是否有用?我正在使用Chicken Scheme。
有点琐碎,但有点同时令人难以置信。
答案 0 :(得分:3)
如specification中所述:
(quote <datum>)
计算表示的基准值(参见第4.3节)。这种表示法用于包含常量。
以上并不排除字符串的引用,实际上该部分中的一个例子是这一个:
'"abc" => "abc"
因此,这也是有效的:
''"abc" => ''"abc"