モノイドふたたび

前にまとめたが、( → ノート:群・モノイド・半群・マグマ(亜群) - 滴了庵日録 )
モノイドとは、集合と二項演算について単位元が存在するやつだった。
(ただし、この二項演算はこの集合のなかで閉じていること、また結合法則をみたすこと)

このようなモノイド (集合, 二項演算, 単位元) の例としてプログラミングの世界でおなじみのやつを挙げると、

  • (Int, +, 0)
  • (Int, *, 1)
  • (Bool, ||, False)
  • (Bool, &&, True)
  • (String, +, "")
  • (Array, +, [])

このうち、(Int, +, 0) 以外は任意の元に対する逆元が存在しないので群にはなれない。モノイドは群よりゆるく、逆元は不要なのでOK。当然ながら、単位元に対する逆元は存在し、それは単位元自身である。

  • (Int, *, 1) は 1以外の元に対する逆元が存在しない。実数でも0に対する逆元が存在しないし、現実のFloatには誤差があるので、(Float, *, 1.0) は群ではない。しかしモノイドではある。
  • (Bool, ||, False) は (Int, +, 0) と似ているが、True (1) に対する逆元が存在しない。(-1 が存在しない)
  • (Bool, &&, True) は (Int, *, 1) と似ている。False (0) に対する逆元が存在しない。
  • String や Array の + は、Int や Float などの + と異なり、単位元以外の元に対する逆元が存在しない。

参考