3
我有类型,它是SemiGroup的一个实例。 我想写一个quickCheck方法来确保它是正确的。 如何创建此类型的任意实例?Haskell高阶类型的任意实例
newtype Combine a b =
Combine { unCombine :: a -> b }
instance Semigroup b => Semigroup (Combine a b) where
x <> y = Combine $ \n -> unCombine x n <> unCombine y n
instance (Q.Arbitrary a, Num a) => Q.Arbitrary (Combine a b) where
arbitrary = do
a <- Q.arbitrary
return $ Combine (\n -> Sum(n+1)) a
这看起来像我想要的。我是新来的哈斯克尔,并试图找出如何将这些依赖关系添加到我的单个文件,使用堆栈。没有yaml或cabal文件。当我明白这一点时,我会在你证明它的工作时标记你的答案并且赞成。感谢您的详细解答。 – mac10688
@ mac10688如果您未使用堆栈文件或cabal文件,则需要使用'cabal install'安装软件包。您需要使用堆栈文件或cabal文件来显式依赖。 –
@DavidYoung我能够使用stack ghci --resolver nightly-2015-11-10 --package universe QuickCheck。现在,我正在处理一些编译错误。 – mac10688