このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

モナドの代数

リストモナド=列モナドの代数は、a:A*→A だから、任意のnに対するn講演算を備えた集合。a:A+→A なら、0項演算(特別な定数)はない。Idモナド(自明モナド)の代数は任意の自己射になる。

Rに対して、a:R*Rに対して、a(空) = 7, その他は平均値の2倍とか定義してもいいから、代数がよく知られた法則性を持つわけではない。単なる演算で、そのアリティが関手で与えられるだけ。

という事情だが、多くの場合、モナドに対して都合がいい代数、典型的な代数があるから、それを挙げておく。

モナド 典型的な代数 追加の法則
リスト(列) モノイド 結合、単位
非空リスト 半群 結合
有限ベキ 半束 結合、単位
べき CPO 最小上界に関する法則
バッグ 可換モノイド 結合、単位
凸結合 凸空間 凸空間の公理
線形結合 ベクトル空間 ベクトル空間の公理
直積スタンピング 作用付き集合 作用の結合、単位
付点 基点付き集合 -


こうしてみると、モナドの関手が、アリティあるいは項集合を定義しているのがわかる。ひとつの関手の代数が構造的類をなしている。

直和スタンピングだと、例外(エラー)を正常値に押し込める“代数”がある。