2012-06-07 13 views
9

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

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

答えて

12

ハッシュ構文は1989年に導入されました。Schemeの著者のメーリングリストにはいくつかの素晴らしいアイデアが含まれています。捕まった人もいる人もいる人もいます。未知の数字を表すために#を導入して立ち往生

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

ひとつのアイデア。 有効数字が2桁で測定されている場合、数字23は知られていますが、最後の数字は不明であることを23##で示すことができます。 2300と書くと、2つのゼロが信頼できないことがわかりません。構文を見たところ、23##は2350と評価されましたが、解釈は実装に依存しています。

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

EDIT

で利用可能なより多くの数字を生成する試み

http://groups.csail.mit.edu/mac/ftpdir/scheme-reports/r3rs-html/r3rs_8.html#SEC52から:多くの実装では、 23##構文

2300としては、正式にここで紹介された解釈します内部の 番号のマシン表現はwiとマークされます"#"は余分な数字を で埋めます。

3:これは、実装 が マシンがフラグの試みは、マシン表現の 15桁のみを持っている数の20桁の数字を生成することになるだけのことを、知っているか、番号の重要性を追跡することを声明ではありません。14158265358979 #####;ここでは、構文を導入する理由

EDIT2

ジェラルド・ジェイサスマンは、書き込み()20(正確Sをfloの):

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

+0

+1、私よりはるかに便利なのが、私は」リンクのためにそれを残すでしょう。これはRnRSの他の場所で指定されていますか? –

+1

多く見つけるのは難しいです。 1つの話題はフォーマットセクションのR3RSマニュアルにあります。インプリメンテーションが20桁の数字を書くように求められているが、内部表現の15桁しか知られていない場合は、未知の数字の代わりに#を書くことができます。 'write'はこれらの数値を生成することができるので、' read'手続きもこれらを扱わなければなりません。 – soegaard

7

はここで、数値定数に関するR4RSとR5RSドキュメントです:

:番号の書かれた表現が全く正確プレフィックスを持っていない場合

は、定数は、不正確または正確いずれであってもよいです。小数点、指数、または数字の代わりに "#"文字が含まれている場合は不正確です。そうでない場合は正確です。

0以外のものは意味しません。

関連する問題