在 QuickCheck2 中重写 Arbitrary Double
Rewriting Arbitrary Double in QuickCheck2
抱歉问了一个新手问题,但我如何重新定义 Arbitrary Double
以产生 +/- 无穷大和 NaN 以及通常的双精度值?以及如何使用我的版本 Arbitrary
?
您不需要创建一个新的 Arbitrary
实例来创建一个类型的自定义 Gen
erator。您可以将其创建为独立定义:
evilDouble :: Gen Double
evilDouble = oneOf [ weirdDouble, arbitrary ]
where
weirdDouble = error "This is where you generate inf and NaN values"
然后在 QuickCheck 的 forAll
:
中明确使用它
prop_foo = forAll evilDouble $ \x -> abs (foo x - 123) < 0.1
抱歉问了一个新手问题,但我如何重新定义 Arbitrary Double
以产生 +/- 无穷大和 NaN 以及通常的双精度值?以及如何使用我的版本 Arbitrary
?
您不需要创建一个新的 Arbitrary
实例来创建一个类型的自定义 Gen
erator。您可以将其创建为独立定义:
evilDouble :: Gen Double
evilDouble = oneOf [ weirdDouble, arbitrary ]
where
weirdDouble = error "This is where you generate inf and NaN values"
然后在 QuickCheck 的 forAll
:
prop_foo = forAll evilDouble $ \x -> abs (foo x - 123) < 0.1