sky*_*ker 0 testing haskell functional-programming functional-testing quickcheck
我有以下,
type Pos = (Int, Int)
Run Code Online (Sandbox Code Playgroud)
我想生成这种类型的随机值,但有一些限制(两者都必须是0-8)
我想做点什么
instance Arbitrary Pos where
arbitrary = do x <- choose(0,8)
y <- choose(0,8)
return (x,y)
Run Code Online (Sandbox Code Playgroud)
然后在我的测试中使用它来获得有效的职位.
这不会起作用bc我是别名(?)元组
我试过的其他方法是在我的测试中使用含义来说
prop_my_prop (x,y) = abs x < 9 && abs y < 9 ==> ...
Run Code Online (Sandbox Code Playgroud)
但我认为这很丑陋,理论上它可能会耗尽快速检查(运行超过1000次).
这是一项任务,所以我只想要一些指示来看待或如何处理这个,我不允许改变Pos.
这不会起作用bc我是别名(?)元组
对,那是正确的.定义新数据类型,您可以拥有一个新实例.
data Pos = Pos Int Int
Run Code Online (Sandbox Code Playgroud)
要么
newtype Pos = Pos (Int, Int)
Run Code Online (Sandbox Code Playgroud)
然后你可以使用你喜欢的任何生成器编写自己的任意实例.