如何使 BigFloat 成为 Arbitrary 的实例(用于 QuickCheck)?
How do I make BigFloat an instance of Arbitrary (for QuickCheck)?
号码包具有 BigFloat
类型。
QuickCheck 具有 Arbitrary
类型类。
因为Double
是Arbitrary
的一个实例,我已经可以这样做了:
sample (arbitrary :: Gen Double)
但我不能这样做,因为 BigFloat e
不是 Arbitrary
:
的实例
sample (arbitrary :: Gen (BigFloat Prec10))
如何使 BigFloat e
成为 Arbitrary
的实例?
更新。我想要一些额外的信息。请参阅赏金中的评论。
将评论中的答案作为社区维基答案发布:
类似于:
instance Epsilon e => Arbitrary (BigFloat e) where arbitrary = fromRational <$> arbitrary
号码包具有 BigFloat
类型。
QuickCheck 具有 Arbitrary
类型类。
因为Double
是Arbitrary
的一个实例,我已经可以这样做了:
sample (arbitrary :: Gen Double)
但我不能这样做,因为 BigFloat e
不是 Arbitrary
:
sample (arbitrary :: Gen (BigFloat Prec10))
如何使 BigFloat e
成为 Arbitrary
的实例?
更新。我想要一些额外的信息。请参阅赏金中的评论。
将评论中的答案作为社区维基答案发布:
类似于:
instance Epsilon e => Arbitrary (BigFloat e) where arbitrary = fromRational <$> arbitrary