Scalaでは
scalaz.Monoid にあり。
- https://www.javadoc.io/doc/org.scalaz/scalaz-core_3/7.3.8/scalaz/Monoid.html
- 独習 Scalaz — Monoid について
定義
二項演算子(★)であり、下記の3つの条件が成立すること。
条件 | 式 |
---|---|
演算が閉じていること | ★: (S, S) => S |
結合法則が成立すること | (a ★ b) ★ c = a ★ (b ★ c) |
単位元(e)が存在すること | e ★ a = a ★ e = a |
更に交換法則 a ★ b = b ★ a が成立すれば可換モノイド。
- マグマ:演算が閉じている
- 半群:演算が閉じている+結合法則が成立
例
二項演算子(★) | 演算子の定義域 | 単位元(e) | 可換 |
---|---|---|---|
+ | Doubleなど | 0 | ○ |
* | Doubleなど | 1 | ○ |
行列積 | 正方行列など | 単位行列 | × |
and | Boolean | true | ○ |
or | Boolean | false | ○ |
xor | Boolean | false | ○ |
∩ | Set | 全体集合 | ○ |
∪ | Set | 空集合 | ○ |
+ | String | "" | × |
++ | List | List() | × |
max | Doubleなど | -∞ | ○ |
min | Doubleなど | +∞ | ○ |