gpt4 book ai didi

haskell - QuickCheck:根据其他 Arbitrary 定义 Arbitrary 实例

转载 作者:行者123 更新时间:2023-12-04 01:45:30 25 4
gpt4 key购买 nike

我正在使用 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变成一个新的?

最佳答案

我会这样做:

instance Arbitrary C
where arbitrary = do a <- arbitrary
b <- arbitrary
return (C a b)

虽然 sclv 的想法是使用 liftM2来自 Control.Monad 可能更好:
instance Arbitrary C
where arbitrary = liftM2 C arbitrary arbitrary

关于haskell - QuickCheck:根据其他 Arbitrary 定义 Arbitrary 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5134259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com