このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

技術者/プログラマのためのモナドと圏論:ウームと考え込んだ結果は

「モニャドセミナー第1回が終わって考え込んでいる」より:

まー色々ありまして、説明すること/伝えることはやっぱり実に大変で難しいなー、とシミジミと思ったのでした。
[...snip...]
フォローの方法や次回以降の筋書き/話題などについて、もうしらばく考え込んででみます。

考え込んだ結果、今後のモニャドセミナーは次のような方針としました。

Map, Partial Map, Relation

PDF版スライド資料 http://www.chimaira.org/archive/slide20090423-6s.pdf でいうと、4ページ目の4番目のスライド=22枚目スライド/全54枚 あたりで第1回が終わっています。それで最後(54枚目)のスライドが「あれ? モナドは? 次回だね。」ですから、当初の予定に無理があるのは明らかなようです。が、第1回でここまでやったことは無駄にしたくないですね。

スライド22枚目以降の話題は、有限オーディナル(Finite Ordinals)を対象とする圏の例(複数の例)なのですが、これらの圏はヤッパリ具体的で分かりやすいと思うし、数えあげ(列挙)可能だという点でも面白いので*1、外したくないなー。

  1. 有限オーディナルを対象として、写像を射とする圏 MapFO (Map category over Finite Ordinals)
  2. 有限オーディナルを対象として、部分写像を射とする圏 MapFO (Partial Map category over Finite Ordinals)
  3. 有限オーディナルを対象として、関係を射とする圏 RelFO (Relation category over Finite Ordinals)

この3つの圏を、とにかくシッカリちゃーんとやることにします。3番目のRelFOは、2値ブール代数を係数とする行列の圏と同型になります -- この事実は説明したいけど、そこから行列の圏へと入り込むのは止めておきます。

当初僕は、リストモナドを例にモナドを導入しようと思っていたのですが、MapFO, PMapFO, RelFO を前提とするなら、単純エラー(例外)モナド(Maybeモナドと同じものです)と有限パワーセットモナド(関手としては共変のほう)を題材とするのが繋がりがスムーズでしょう。パワーセットモナドはコレクションモナドの一種なので、まーリストモナドの代わりにこれを使ってもいいんじゃないかなー、と。

パワーセットモナドのクライスリ圏がほぼRelFO*2であり、このクライスリ圏の自己射(endomorphism)は、非決定性遷移系(自明アルファベット上の非決定性オートマトン)なので、タイムチックに沿って動作する系の記述に使えます。

バッグ(bag)モナドや凸結合(convex combination)モナドも面白いんだけど、このへんはオプショナルな題材ということにしましょう。(いろんな題材=実例は http://d.hatena.ne.jp/m-hiyama-memo/20090417/1239955421 に列挙されています。)

行列の圏と絵算

「行列の圏へと入り込むのは止めておきます」と書いたけど、第1回のキャッチフレーズだった「少し違った視点で見れば、世界が面白くなる」を強烈に感じることができる題材が行列圏における絵算なんだよねー。というわけで、この話題を外してしまうのは実に残念なのだ。とはいえ、本来のテーマであったモナドをずっと後回しにするのも気が引けるわけでして。折衷案として、モナドへ行きたい人コースとは枝分かれして、行列で遊ぶコースがあってもいいかもしれない。つうか、そのコースもやります。

僕が「行列と絵算で遊ぶ」ネタに執着があるのは次の理由です。圏論やらモナドやらは、ある程度は抽象的な理論的構築物だから、見晴らしがいい所までたどり着くまでには、取っつきにくい定義を咀嚼したり無理に呑み込んだりの我慢も必要なわけです。山登りみたいなもんでしょうか。

しかし、頂上まで登り切るために、あまりにも体力とスキルと忍耐が必要とされると、いくら「頂上に着いたらスンバラシイ眺望がひらけるんだ!」と鼓舞しても無理ですよね。耐えきれない、やんなっちゃう。僕自身、途中でやんなった経験は何度もあるし、頂上からの美しく気持ちいい景色を知っていたとしても「だから我慢しろ」と言い続けるのはイヤなんですよ。

だから、比較的楽に登れて、そこそこ見晴らしがいい景色をおがめるような、そんな小山がないかなーといつも探してます。登るコストと得られる眺望の比率が有利な題材ですね。

そんな観点からは、行列圏の絵算は(上で言った意味の)コストパフォーマンスは抜群、お得だと思います。通常の線型代数は不要です。絵算で行列計算すると、すごく具体的で馴染みのある結果が、直感的にたくさん得られます。人により好みや感性の違いはあるでしょうが、僕は普通の線型代数よりずっと簡単で楽しいと感じます。

と、そんな次第で、なんらかの形で「行列圏の絵算」コースもやりたいと思ってます。具体的なことは何も決めてませんが。

*1:組合せの話が苦手な僕でも楽しい感じがするので、多くの人にとって面白いだろうと予想するのだけど、どうだろ?

*2:a∈FO でも Pow(a)∈FO とは限らないので、圏を拡張する必要があります。