1

関数の最適化と評価quickcheckを行う Haskell プログラムのテストを作成しました。

問題は、次のようなquickcheck式を生成することです。NaN

> acos(2)
NaN

Haskell は、次のステートメントを false と評価します。

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

したがって、私のquickcheckテストはこの比較で失敗します。値を比較する方法はありNaNますか?

4

1 に答える 1

7

いいえ、 IEEE 754で定義されているように、2 を比較するとNaN常に false が返されます。値がNaNHaskell にあるかどうかを確認するには、メソッドを使用isNaNするか、自分で記述します

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