假设,我有像
data D = A | B String | C String
data TestIt m = TestIt {
x :: m Int
, y :: Int -> m D
}
我正在编写 SmallCheck 测试,所以我需要以下Serial实例TestIt:
instance Monad m => Serial m (TestIt m) where
series = TestIt <$> (pure <$> series) <~> xxx
这个怎么写xxx?我知道它可能需要CoSerial类似的功能,但是 1)我不确定 2)我不知道如何编写它。当我看到CoSerial文档时,我看到我的CoSerial遗嘱有Int而不是D在其定义中:
instance (CoSerial m a) => CoSerial m (Int a) where
coseries rs = ???
所以我不知道CoSerials 以及如何使用它们来制作Serialfor Int -> m D。
我也想拥有yfield的依赖序列。我的意思是如果x有样本 0 那么序列y应该0作为参数。可能吗?