很抱歉有新手问题,但我怎样才能重新定义Arbitrary Double
以产生+/-无穷大和NaN以及通常的双打?如何使用我的Arbitrary
版本?
答案 0 :(得分:1)
您不需要创建新的Arbitrary
实例,只需为类型创建自定义Gen
执行者。您可以将其创建为独立的定义:
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