如何使 BigFloat 成为 Arbitrary 的实例(用于 QuickCheck)?

How do I make BigFloat an instance of Arbitrary (for QuickCheck)?

号码包具有 BigFloat 类型。

QuickCheck 具有 Arbitrary 类型类。

因为DoubleArbitrary的一个实例,我已经可以这样做了:

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