モナドの代数
リストモナド=列モナドの代数は、a:A*→A だから、任意のnに対するn講演算を備えた集合。a:A+→A なら、0項演算(特別な定数)はない。Idモナド(自明モナド)の代数は任意の自己射になる。
Rに対して、a:R*→Rに対して、a(空) = 7, その他は平均値の2倍とか定義してもいいから、代数がよく知られた法則性を持つわけではない。単なる演算で、そのアリティが関手で与えられるだけ。
という事情だが、多くの場合、モナドに対して都合がいい代数、典型的な代数があるから、それを挙げておく。
モナド | 典型的な代数 | 追加の法則 | |
---|---|---|---|
リスト(列) | モノイド | 結合、単位 | |
非空リスト | 半群 | 結合 | |
有限ベキ | 半束 | 結合、単位 | |
べき | CPO | 最小上界に関する法則 | |
バッグ | 可換モノイド | 結合、単位 | |
凸結合 | 凸空間 | 凸空間の公理 | |
線形結合 | ベクトル空間 | ベクトル空間の公理 | |
直積スタンピング | 作用付き集合 | 作用の結合、単位 | |
付点 | 基点付き集合 | - |
こうしてみると、モナドの関手が、アリティあるいは項集合を定義しているのがわかる。ひとつの関手の代数が構造的類をなしている。
直和スタンピングだと、例外(エラー)を正常値に押し込める“代数”がある。