任意实现

时间:2015-12-21 23:55:38

标签: haskell instance

我在为我的数据类型编写任意实例时遇到问题。以下是:

    data FavoriteList a = FL [(a, Bool)] deriving Eq

这就是我所拥有的:

    instance Arbitrary a => Arbitrary(FavoriteList a) where
       arbitrary = oneof [liftM FavoriteList arbitrary]

但我收到以下错误:

    Not in scope: data constructor 'FavoriteList'

我可能不理解关于类型和构造函数的东西我认为......有人可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

您尝试在值级别使用类型级别FavoriteListFL是一个价值级术语,可为您选择的FavoriteList a构建a类型的值。 FL <$> arbitrary应该足够,或等效fmap FL arbitraryliftM FL arbitrary。有关Haskell的类型和价值级语言的更全面解释,请参阅this excellent answer by Conor McBride