我在为我的数据类型编写任意实例时遇到问题。以下是:
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'
我可能不理解关于类型和构造函数的东西我认为......有人可以帮助我吗?
答案 0 :(得分:3)
您尝试在值级别使用类型级别FavoriteList
。 FL
是一个价值级术语,可为您选择的FavoriteList a
构建a
类型的值。 FL <$> arbitrary
应该足够,或等效fmap FL arbitrary
或liftM FL arbitrary
。有关Haskell的类型和价值级语言的更全面解释,请参阅this excellent answer by Conor McBride。