我可以帮您翻译成中文。这段内容是关于 Haskell 编程语言中创建一个 Map(映射)类型,使其能够与一个键关联多个值的说明。
如果我编译以下代码:
GHCi会抛出:
如果我编译以下代码:
type Mapa k v = Map k [v]
instance Monoid (Mapa k v) where
--mempty :: Mapa k v
mempty = DM.empty
--mappend :: Mapa k v -> Mapa k v -> Mapa k v
mappend a b = DM.unionWith (++) a b
GHCi会抛出:
Illegal instance declaration for `Monoid (Map k [v])'
(All instance types must be of the form (T a1 ... an)
where a1 ... an are *distinct type variables*,
and each type variable appears at most once in the instance head.
Use -XFlexibleInstances if you want to disable this.)
In the instance declaration for `Monoid (Map k [v])'
Mapa 应该是 newtype
还是 data
?或者说有什么问题吗?