Я использую 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 в новый?