我有这个类型并且它是SemiGroup的一个实例。 我想编写一个quickCheck方法来确保它是正确的。 如何创建这种类型的一个Arbitrary实例?
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
cabal install
命令安装软件包。您需要使用栈文件或Cabal文件以明确声明依赖项。 - David Young