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.==运算符或执行 epsilon 测试?您是否考虑过像 Haskell 的Data.Decimal之类的类型(其中尾数和指数作为一对整数处理)?

于 2017-03-02T15:33:32.887 回答
1

The simple answer is: no, you can't.

于 2017-03-04T09:48:28.070 回答