モノイドを表す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型を定義してみます。