方案编号文字中#的含义

时间:2012-06-07 15:37:56

标签: syntax scheme racket

运行R5RS的DrRacket表示1###是完全有效的Scheme号,并打印值1000.0。这让我相信英镑符号(#)表示数字不精确,但我不确定。该规范还说它是一个数字文字的有效语法,但它没有说明这些符号的含义。

有关计划编号文字中#符号的重要信息吗?

2 个答案:

答案 0 :(得分:14)

哈希语法是在1989年引入的。在Scheme作者邮件列表中讨论了不精确的数字,其中包含了一些不错的想法。有些人抓住了,有些人没有。

http://groups.csail.mit.edu/mac/ftpdir/scheme-mail/HTML/rrrs-1989/msg00178.html

卡住的一个想法是引入#代表未知数字。 如果您使用两位有效数字进行衡量,则可以指出23##已知数字23,但最后一位数字未知。如果你写2300,那么你就看不到这两个零是不受信任的。当我看到我期望23##评估为2350的语法时,但(我相信)解释依赖于实现。许多实现将23##解释为2300。

语法在这里正式介绍:

http://groups.csail.mit.edu/mac/ftpdir/scheme-mail/HTML/rrrs-1989/msg00324.html

修改

来自http://groups.csail.mit.edu/mac/ftpdir/scheme-reports/r3rs-html/r3rs_8.html#SEC52

  

尝试生成比内部更多的数字   数字的机器表示将标有"#"填充   额外的数字。这不是执行的声明   知道或记录数字的重要性,只需要知道   机器将标记尝试生成具有的数字的20位数   只有15位数的机器代表:

     

3.14158265358979 #####; (flo 20(准确性s))

EDIT2

Gerald Jay Sussman写道为什么在这里引入语法:

http://groups.csail.mit.edu/mac/ftpdir/scheme-mail/HTML/rrrs-1994/msg00096.html

答案 1 :(得分:7)

以下是关于数值常数的R4RS和R5RS文档:

即便:

  

如果数字的书面表示没有精确性前缀,则常量可能是不精确的或精确的。如果它在数字位置包含小数点,指数或“#”字符则不准确,否则它是准确的。

除了0以外,不确定它们是否意味着什么。