[Book Note] Haskell: Monoid

来源:互联网 发布:淘宝潮男店铺粉丝排行 编辑:程序博客网 时间:2024/06/05 00:23

Definition

class Monoid m where    mempty :: m    mappend :: m -> m -> m    mconcat :: [m] -> m    mconcat = foldr mappend mempty

Restriction

mempty `mappend` x = xx `mappend` mempty = x(x `mappend` y) `mappend` z = x `mappend` (y `mappend` z)

Instances

instance Monoid [a] where    mempty = []    mappend = (++)instance Monoid Ordering where    mempty = EQ    LT `mappend` _ = LT    EQ `mappend` y = y    GT `mappend` _ = GTinstance Monoid a => Monoid (Maybe a) where    mempty = Nothing    Nothing `mappend` m = m    m `mappend` Nothing = m    Just m1 `mappend` Just m2 = Just (m1 `mappend` m2)
0 0
原创粉丝点击