【发布时间】:2016-10-17 15:01:59
【问题描述】:
我想为以下新类型创建一个Arbitrary 实例,以便将其用于快速检查:
newtype Wrapmaybe a = Wrapmaybe {getMaybe :: Maybe a} deriving (Eq, Show)
我知道Maybe的Arbitrary实例可以写成如下:
instance Arbitrary a => Arbitrary (Maybe a) where
arbitrary = frequency [(1, return Nothing), (1, liftM Just arbitrary)]
我如何编写Arbitrary 实例以用于以下内容,而不会出现类型错误或类型错误:
instance Arbitrary a => Arbitrary (Wrapmaybe Maybe a) where
etc...
【问题讨论】:
-
要写这样一个实例,你必须改变
Wrapmaybe的定义——也许你正在寻找newtype Wrap f a = Wrap (f a)
标签: haskell quickcheck