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