14

R5RS を実行している DrRacket は、それ1###が完全に有効なスキーム番号であると言い、値を出力します1000.0。このことから、ポンド記号 (#) は数値の不正確さを示していると思われますが、確かではありません。仕様はまた、数値リテラルの有効な構文であると述べていますが、それらの記号が何を意味するかについては述べていません。

スキーム番号リテラルの # 記号が何を意味するかについてのアイデアはありますか?

4

2 に答える 2

16

ハッシュ構文は 1989 年に導入されました。Scheme 作成者のメーリング リストで不正確な数値に関する議論があり、いくつかの優れたアイデアが含まれています。うまくいった人もいれば、うまくいかなかった人もいます。

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

定着したアイデアの 1 つ#は、未知の数字を表す を導入することでした。有効数字が 2 桁の場合23##、数字2と数字3はわかっているが、最後の数字は不明であることを示すことができます。と書く2300と、2 つのゼロが信頼できないことがわかりません。構文を見たとき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から

数字の内部マシン表現で利用可能な数字よりも多くの数字を生成しようとすると、余分な数字を埋める「#」でマークされます。これは、実装が数値の意味を認識または追跡しているというステートメントではなく、マシン表現が 15 桁しかない数値の 20 桁を生成しようとする試みにマシンがフラグを立てるというだけです。

3.14158265358979##### ; (flo 20 (正確性 s))

EDIT2

Gerald Jay Sussman は、ここに構文を導入した理由を書いています。

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

于 2012-06-07T16:59:20.347 に答える
8

数値定数に関するR4RSとR5RSのドキュメントは次のとおりです。

ウィット:

数値の記述表現に正確性の接頭辞がない場合、定数は不正確または正確である可能性があります。小数点、指数、または数字の代わりに「#」文字が含まれている場合は不正確であり、それ以外の場合は正確です。

以外の意味があるかどうかはわかりません0

于 2012-06-07T15:57:59.517 に答える