正如在REAL signature中解释的那样,在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)然而,这并不方便,因为数据类型和包含reals的列表也会失去相等性。我需要用Real.==重载多态相等=,这样它也可以近似地考虑reals。
这有可能吗?
编辑:编辑后的问题更清晰
发布于 2017-03-02 23:33:33
您是否阅读了Why can't I compare reals in Standard ML并考虑使用Real.==运算符或执行epsilon测试?你有没有考虑过像哈斯克尔的Data.Decimal这样的类型(其中尾数和指数是作为一对整数处理的)?
发布于 2017-03-04 17:48:28
答案很简单:不,你不能。
https://stackoverflow.com/questions/42559221
复制相似问题