モノイドを表すHaskellのコード

 モノイドはData.Monoidにて、以下のように定義されています。
なので自分で定義する必要はありません。 ヤッター。

-- モノイド型クラス
class Monoid a where
  mappend :: a -> a -> a
  mempty  :: a

mappendについては我らの知る通り、半群のsappendと全く同じものです。

-- 半群型クラス
class Semigroup a where
  sappend :: a -> a -> a

そう、モノイドは半群の「二項演算」を持っているのでした。 ( モノイドは、半群を拡張した構造でした )

加えて、memptyという定数が存在しています。
では、もう一度Intを使ってMonoid Int型を定義してみます。