モノイド
集合が「集合の2つの要素を結びつける結合的な演算子」と「その演算子に対する単位元」を持つとき、その代数的構造をモノイドと呼ぶ。例えば、整数の集合は加算演算子と単位元0に対してモノイドを形成する
code:monoid.hs
class Monoid a where
mempty :: a
mappend :: a -> a -> a
mconcat = foldr mappend mempty
-- 単位元と結合に関する則
-- mempty mappend x = x
-- x mappend mempty = x
-- x mappend (y mappemd z) = (x mappend y) mappend z