为什么(引用'“foo”)在Scheme中有效的语法?

时间:2013-03-18 16:10:36

标签: scheme

为什么(quote '"foo")会通过Scheme解释器?根据如何在Scheme中构造表达式,它在语法上应该是冗余的或错误的。只要有人想要使用符号而没有使用Scheme认为它是变量而字符串不是 valid symbols,那么quote用于quote运算符的缩写在作为字符串前缀时有效吗?奇怪的是(quote '"foo")返回(quote "foo")冗余?

另一个奇怪的实验(symbol? '"foo")被评估为#f,以便证明所引用的字符串仍然不是符号(如果引用在语句中以这种方式工作)。那么,'是否在字符串上被忽略或者它在其他地方是否有用?我正在使用Chicken Scheme。

有点琐碎,但有点同时令人难以置信。

1 个答案:

答案 0 :(得分:3)

specification中所述:

  

(quote <datum>)计算表示的基准值(参见第4.3节)。这种表示法用于包含常量。

以上并不排除字符串的引用,实际上该部分中的一个例子是这一个:

'"abc" => "abc"

因此,这也是有效的:

''"abc" => ''"abc"