Chr*_*dal 3 haskell typeclass quickcheck
我在我的程序中使用Data.List.Vector,现在我想使用quickCheck.但是,没有这方面的例子.因为[Double]已经有任意,我想我可以做类似的事情
instance Arbitrary V.Vector Double where
arbitrary = V.fromList (arbitrary :: [Double])
Run Code Online (Sandbox Code Playgroud)
唉,GHC完全不喜欢这个:
`Arbitrary' is applied to too many type arguments
In the instance declaration for `Arbitrary V.Vector Double'
Run Code Online (Sandbox Code Playgroud)
我想我也可以制作一堆接受[Double]并使用V.fromList的属性,但这看起来很单调乏味.
Ven*_*nge 10
你的问题是你需要将它括起来,比如instance Arbitrary (V.Vector Double)等等.但是有更好的方法:
instance (Arbitrary a) => Arbitrary (V.Vector a) where
arbitrary = fmap V.fromList arbitrary
Run Code Online (Sandbox Code Playgroud)
需要注意的是你需要的fmap,因为arbitrary是类型的值Gen a,所以为了从去Gen [a]到Gen (V.Vector a)需要提起V.fromList到Gen,你可以这样做,因为这是一个仿函数.