1

REAL シグネチャで説明されているように、SML で定義されている実数型は等価型ではないため、次の式は還元されません。

> 1.0 = 1.0;
poly: : error: Type error in function application.
   Function: = : ''a * ''a -> bool
   Argument: (1.0, 1.0) : real * real
   Reason: Can't unify ''a to real (Requires equality type)

ただし、実数を含むデータ型とリストも等しくなくなるため、これは便利ではありません。実数もほぼ考慮できるように、ポリモーフィックな等価性をオーバーロードする必要があり=ます。Real.==

それは可能ですか?

編集:より明確にするために質問を編集しました

4

2 に答える 2

3

標準 ML で実数を比較しReal.==て演算子を考慮したり、イプシロン テストを実行したりできない理由を読みましたか? Haskell のData.Decimalのような(仮数部と指数部が Integer のペアとして扱われる) 型を考えたことはありますか?

于 2017-03-02T15:33:32.887 に答える