関数の最適化と評価quickcheckを行う Haskell プログラムのテストを作成しました。
問題は、次のようなquickcheck式を生成することです。NaN
> acos(2)
NaN
Haskell は、次のステートメントを false と評価します。
> acos(2)==acos(2)
False
したがって、私のquickcheckテストはこの比較で失敗します。値を比較する方法はありNaNますか?
関数の最適化と評価quickcheckを行う Haskell プログラムのテストを作成しました。
問題は、次のようなquickcheck式を生成することです。NaN
> acos(2)
NaN
Haskell は、次のステートメントを false と評価します。
> acos(2)==acos(2)
False
したがって、私のquickcheckテストはこの比較で失敗します。値を比較する方法はありNaNますか?
いいえ、 IEEE 754で定義されているように、2 を比較するとNaN常に false が返されます。値がNaNHaskell にあるかどうかを確認するには、メソッドを使用isNaNするか、自分で記述します
isNaN' :: a -> Bool
isNaN' a = a /= a