【问题标题】:Quoting numerical constants in Chez Scheme在 Chez Scheme 中引用数字常量
【发布时间】:2021-03-16 14:56:20
【问题描述】:

我很好奇为什么 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
> 


【问题讨论】:

    标签: scheme lisp chez-scheme


    【解决方案1】:

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

    符号的书写规则与标识符的书写规则完全相同[6.3.3 Symbols]

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

    现在,'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

    【讨论】:

    • 谢谢!这是有道理的。
    猜你喜欢
    • 2021-09-22
    • 2019-09-18
    • 1970-01-01
    • 2020-04-22
    • 2021-10-17
    • 1970-01-01
    • 2016-10-20
    • 2016-07-25
    • 2016-10-17
    相关资源
    最近更新 更多