1

私はちょうどThe Little Schemerを読み始めたところです。いくつかの単語を理解するのに問題があります。

27ページには、次のように書かれています。

方程式の法則?

原始式?2 つの引数を取ります。それぞれが数値以外のアトムでなければなりません。"

脚注には次のように書かれています:実際には、一部の数値は eq? の引数になる可能性があります。

私は自分のスキームインタープリターとしてracket-minimalを使用しています。に評価さ(eq? 10 10)#tます。

TOYSの章には、似たような問題がたくさんあります。


著者は、must (太字でマーク) と脚注で何を意味していましたか?

4

2 に答える 2

2

低整数や文字などのいくつかのプリミティブ データ型をポインター自体に埋め込むことは伝統的でありeq?、データがソース内の異なる時間/ポイントでソースにあるようになった場合でも、これらのデータ型を作成します。ただし、数値は任意のサイズにすることができるため、ある時点で数値が特定の実装依存のサイズに達したとしても、ポインターには大きすぎます。試してみると、32ビットシステムと64ビットシステム(eq? 10000000000 10000000000)である可能性がありますが、どのシステムでもそうです。#f#t(eqv? 10000000000 10000000000)#t

于 2014-05-21T12:09:20.027 に答える
1

スキームの真の恒等述語はeqv?. 数値、文字、または手順に適用された場合の代わりにEq?レポートが許可される最適化されたバージョンです。ほとんどの Scheme 実装は、小さい正確な数 ("fixnum" と呼ばれる)、文字、および手続きに対しては正しいことを行いますが、より大きな数や他の型の数に対しては機能しません。#f#teq?

したがって、「MUST」と言うのは、数値に適用した場合に部分的にしか予測できない結果しか得られないことを意味しますeq?。脚注は、場合によっては (これには通常 10 が含まれます)、問題なく処理できることを意味します。さまざまなスキームが fixnum で実際に行うことの詳細については、R7RS 開発サイトの FixnumInfo を参照してください。

于 2014-08-28T21:44:17.083 に答える