Chez格式中引用数值常数



我很好奇为什么Chez Scheme不把数字当作符号。无论它们是在列表中还是单独引用,number?都返回true,这意味着它没有被制成符号。这有实际的原因吗?

Chez Scheme Version 9.5.4
Copyright 1984-2020 Cisco Systems, Inc.
> (number? (car '(1 2 3 4 5)))
#t
> (symbol? (car '(1 2 3 4 5)))
#f
> (define symbolic-num '5)
> (number? symbolic-num)
#t
> (symbol? symbolic-num)
#f
> 

这不是Chez特有的,而是标准行为;参见例如R5RS:

写入符号的规则与写入标识符的规则完全相同[6.3.符号]

所以数字文字不能是符号,因为它不是标识符。

现在,'e(quote e)和的简写

(quote <datum>)的求值结果为<datum>。[4.1.2文字表达]

也就是说,(quote 1)-'1-计算为整数1(quote a)-'a-计算为符号a

数值常量、字符串常量、字符常量和布尔常量的计算结果为"自身";它们不需要被引用。[4.1.2文字表达]

这有点令人困惑,因为REPL在";引用的简写";形式,但这只是一个输出约定
请注意,(display 'a)将显示a,而不是'a

相关内容

  • 没有找到相关文章

最新更新