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

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

はじめての圏論 -- メイキング/NG集 1

本編の「はじめての圏論」の第5歩第6歩は、ちょっと先走りだったかもね(番外は“番外”だからまーいいとしても)。

圏論によりソフトウェアを理解する」のが僕の問題意識だから、話がソッチ方向にいってしまうのは、まー、いたしかたないのだけど、ソフトウェア(計算科学)への応用は、入門ネタとしては(ひょっとして一般論としても)難しい。

ソフトウェア(ハードウェアでもいいけど)への圏論の適用方法の大原則があるにはあるが、実際にやってみると、対象、射、結合を特定/定義するのが難しかったりする。圏構造を見つけて同定するのが面倒なのだ。しかも、圏構造がいくつも重層的に入っていたりする。ケースごとに圏構造を使い分けたり、たくさんの圏を一度に考える必要があったりする。

入門的説明としては、行列の圏を中心にする方針もあるし、他に手でいじれる具体例もあるから、それらでもう少し圏に慣れてからでないと、ソフトウェアを圏でモデル化するのは抵抗感と困難があるかもしれない。

ただし、変換キューはいい例だと思っている。Unixのパイプ機構をうまく説明しているし、半圏からの圏の構成にもなっている。半圏と、パラメトライズされたベキ等射の族qx:Jx→Jx (x∈X、Xは半圏の外にある任意の集合でよい)から圏を作る構成は割と広く使える。他にも、半圏と射の族(バッファ、コネクタ、アダプタ)から圏を作る構成法は色々ありそうだ。