群型クラスと群インスタンス
-- 群型クラス
class Group a where
gappend :: a -> a -> a
gempty :: a
ginv :: a -> a -- inverse
-- 群インスタンスの例
instance Group Int where
gappend = (+)
gempty = 0
ginv = negate
ひとまず群型クラスとGroup Int型の定義のみを並べてみました。
群の満たす法則は
- 結合律
- 単位元律
- 逆元の法則
でした。
それぞれ
gappend
gempty
ginv
が対応していて、Groupのgappend
とgempty
は
このMonoidのmappend
とmempty
と同一のものです。※1
そう、モノイド(Monoid
)に逆元の存在(ginv
)を足した構造が群でした!
※1
今回の群インスタンスの例は、半群, モノイドと違い
演算が(+)
、単位元が0
になっています。
整数集合には5
の逆元がないから、
((*), 1)
は群にはなれないのです!
(
5 * 0.2 = 0.2 * 5 = 1
にはなりますが、0.2は整数ではありません!
)