1

inexact->exactSICPで説明されているScheme手順はどのように機能しますか?

4

2 に答える 2

6

Scheme 標準は、正確性/不正確性がどのように記録されるかについていくつかの一般的な制約を与えるだけですが、標準の R5RS までのほとんどの Scheme 実装は、次のように動作します (SICP の「母国語」である MIT Scheme もこのように動作します)。

  1. 数値型のデータを含む各セルの型情報は、データが正確か不正確かを示します。
  2. データ レコードに対する算術演算は、入力の正確さから結果の正確さを導き出します。一般に、不正確さは感染します。オペランドのいずれかが不正確である場合、結果もおそらくそうなるでしょう。ただし、Scheme の実装では、特殊なケースで正確性を推測することが許可されていることに注意してください。たとえば、不正確な 4.3 を正確な 0 で乗算すると、結果が正確に 0 であることがわかります。
  3. 特殊な演算 inexact->exact および exact->inexact は数値型のキャストであり、結果の型がそれぞれ正確または不正確であることを保証します。

いくつかのポイント: まず、異なるスキームの標準は、オペレーターが正確さを与えるかどうかで異なります。基準は何が起こるかを過小評価します。たとえば、いくつかのScheme実装は正確な有理数の表現を持っているため、正確(/ 1 3)に表現することができますが、floatのみを持つScheme実装はこれを不正確に表現しなければなりません。

第 2 に、R6RS は SICP や以前の標準とは異なる伝染の概念を持っています。率直に言って、古い基準は壊れているからです。

于 2010-12-27T14:28:58.837 に答える
0

正確さは単に数値のプロパティです。数値自体の値は変更されません。したがって、フラグを使用して正確性を示す実装では、inexact->exactその数値に正確性フラグを設定するだけです。

于 2010-12-27T14:28:31.250 に答える