gpt4 book ai didi

haskell - QuickCheck 仅限于某些数据构造函数

转载 作者:行者123 更新时间:2023-12-02 09:05:19 29 4
gpt4 key购买 nike

我有一个数据类型定义:

data Point = Point {x :: Int, h :: Int} | EmptyPoint

在我的属性测试中,我想将测试限制为仅针对 Point 构造函数案例。例如,point1 - point2 = Point 0 0。这假定定义了访问器 x,但 EmptyPoint 的情况并非如此。

换句话说:我不想生成 EmptyPoint。

有办法做到这一点吗?

最佳答案

您可以手动编写一个类并让它生成您的点,而不是自动派生您的类型的 Arbitrary 类(我认为您目前正在做的事情)你想要的,例如:

instance Arbitrary Point where
arbitrary = Point <$> arbitrary <*> arbitrary

或者如果您愿意的话,可以用更详细的方式:

instance Arbitrary Point where
arbitrary = do
x <- arbitrary
y <- arbitrary
pure Point { x, y }

关于haskell - QuickCheck 仅限于某些数据构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59337358/

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