假设我有以下数据结构:
data Dezi = Dezi1 Int | Dezi2 String | Dezi3 [Dezi] deriving(Show)
class TestInterface a where
testInt :: a -> Dezi
instance TestInterface Int where
testInt 0 = Dezi1 0
testInt _ = Dezi2 "Nie nula"
instance Dezi a => TestInterface [a] where
testInt xs = Dezi3 $ map (\x -> testInt x) xs
在上一个语句中,我正在尝试为我的类型类I创建通用实例,因为类型'a'是Int或String,但编译器不满意:
`Dezi' is applied to too many type arguments
In the instance declaration for `TestInterface [a]'
我是初学者,仍处于学习过程中。
谢谢!
答案 0 :(得分:4)
Dezi
是一种数据类型,而不是类型类。类型不是“Dezi
的实例”。相反,你可能会说像
instance TestInterface a => TestInterface [a] where
testInt xs = Dezi3 $ map testInt xs
这类似于“来列出a
TestInterface
的实例,查找a
的实例并使用它。” < / p>