Haskell: comparing NaN values

2019-03-01 14:06发布

问题:

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?

回答1:

No, as is defined by IEEE 754 comparing 2 NaNs 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