Haskell:比较NaN值 [英] Haskell: comparing NaN values
问题描述
我写了 quickcheck
测试一个Haskell程序,该程序可以优化和评估函数。 =https://hackage.haskell.org/package/QuickCheck-2.8.1/docs/Test-QuickCheck.html =nofollow> quickcheck
生成表达式,导致 NaN
类似:
> acos(2)
NaN
Haskell将以下语句计算为false:
> acos(2)== acos(2)
False
所以我 quickcheck
测试通过此比较失败。
是否有任何方法可以比较 NaN
值?
否,如 IEEE 754 所定义2 NaN
s总是返回false。如果你的值在Haskell中是 NaN
,你可以使用 isNaN
方法或自行编写
isNaN':: a - > Bool
isNaN'a = a / = a
I wrote quickcheck
tests for a Haskell program that optimizes and evaluates a function.
The problem is quickcheck
generates expressions resulting in NaN
like:
> acos(2)
NaN
Haskell evaluates the following statement as false:
> acos(2)==acos(2)
False
So my quickcheck
tests fail with this comparison.
Is there any way to compare NaN
values?
No, as is defined by IEEE 754 comparing 2 NaN
s always return false. To chceck if your value is NaN
in Haskell you can use isNaN
method or write it by yourself
isNaN' :: a -> Bool
isNaN' a = a /= a
这篇关于Haskell:比较NaN值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!