1

quickcheck我为优化和评估函数的 Haskell 程序编写了测试。

问题是quickcheck生成表达式,结果NaN如下:

> acos(2)
NaN

Haskell 将以下语句评估为错误:

> acos(2)==acos(2)
False

所以我的quickcheck测试在这个比较中失败了。有什么方法可以比较NaN值吗?

4

1 回答 1

7

不,正如IEEE 754所定义的,比较 2 NaNs 总是返回 false。要检查您的值是否NaN在 Haskell 中,您可以使用isNaN方法或自己编写

isNaN' :: a -> Bool
isNaN' a = a /= a
于 2013-11-06T10:49:31.623 回答