我正在使用 QuickCheck 1,我有以下数据类型:
data A = ...
instance Arbitrary A where ...
data B = ...
instance Arbitrary B where ...
data C = C A B
现在我想定义一个Arbitrary
实例,C
以便C
使用现有的生成器为A
和生成值B
。我最终这样做了:
instance Arbitrary C where
arbitrary = elements [(C a b) |
a <- generate 20 (System.Random.mkStdGen 0) arbitrary,
b <- generate 20 (System.Random.mkStdGen 0) arbitrary]
这种明确生成固定数量的值是必要的A
,B
还是有更好的方法将现有的值组合Arbitraries
成一个新的值?