实例化任意
Instancing arbitrary
我在为我的数据类型编写 Arbitrary 实例时遇到问题。以下是:
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'
我可能不太了解类型和构造函数,我认为...有人可以帮我吗?
您正试图在值级别使用类型级别的术语 FavoriteList
。 FL
是值级术语,它为您选择的 a
构造类型 FavoriteList a
的值。 FL <$> arbitrary
应该足够了,或者等同于 fmap FL arbitrary
或 liftM FL arbitrary
。有关 Haskell 类型和值级别语言的更详尽解释,请参阅 this excellent answer by Conor McBride。
我在为我的数据类型编写 Arbitrary 实例时遇到问题。以下是:
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'
我可能不太了解类型和构造函数,我认为...有人可以帮我吗?
您正试图在值级别使用类型级别的术语 FavoriteList
。 FL
是值级术语,它为您选择的 a
构造类型 FavoriteList a
的值。 FL <$> arbitrary
应该足够了,或者等同于 fmap FL arbitrary
或 liftM FL arbitrary
。有关 Haskell 类型和值级别语言的更详尽解释,请参阅 this excellent answer by Conor McBride。