在QuickCheck2中重写任意双

时间:2015-02-17 10:47:23

标签: haskell quickcheck

很抱歉有新手问题,但我怎样才能重新定义Arbitrary Double以产生+/-无穷大和NaN以及通常的双打?如何使用我的Arbitrary版本?

1 个答案:

答案 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