我宣布了一个班级和两个实例:
class A a where
name :: a -> String
dMs :: a -> [(String,String,Double)]
instance A B where
name s = B s
dMs a = dM a
instance A C where
name s = C s
dMs a = dM a
dM :: (A a) => [a] -> [(String,String,Double)]
但是当我用上面的标题编译我的时候我得到一个错误:
Couldn't match expected type ‘[a0]’ with actual type ‘C’
In the first argument of ‘dM’, namely ‘a’
In the expression: dM a
我希望dM
函数能够获取B
或C
类型的列表。
如果我将标题更改为仅接受一种类型(仅B
或仅C
),则代码可以编译并且无故障地工作。
答案 0 :(得分:0)
我现在就开始工作了。
class A a where
name :: a -> String
dMs :: [a] -> [(String,String,Double)]
instance A B where
name s = B s
dMs a = dM a
instance A C where
name s = C s
dMs a = dM a
dM :: (A a) => [a] -> [(String,String,Double)]
那么它在Class
中指定它应该采用a
的列表,如下所示:[a]
。
感谢大家的帮助。