制作Monoid的自定义列表ADT实例

时间:2018-07-06 15:02:11

标签: haskell

这可能是我显然缺少的东西,但似乎应该可以,但是却出现了Expecting one more argument to ‘Star' Expected a type, but ‘Star’ has kind ‘* -> *’错误,我无法解读。

data Star a = None | Union a (Star a)
    deriving Show

instance Monoid Star where
    mempty = None
    mappend None rs = rs
    mappend (Union r rs) rst = Union r (mappend rs rst)

1 个答案:

答案 0 :(得分:4)

仅具体类型(例如Int)可以是Monoid。 Star是类型为*-> *的抽象类型。 编辑:当然(星a)也可以是Monoid(像[a]),但不是星。

true