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

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

モジュールの圏

[追記]category of modules って言葉は使えないわ。加群圏だもんな。 [/追記]

ゴグエンの大局的プログラミングprogramming in the large)の発想でモジュール計算をしていたら、GoI構成とコンパクト閉圏が出てきてビックリ。

モジュールMとNが提供(provide)している名前をお互いに吸収しあう方法で結合すると、これがGoI構成の8の字結合になる。8の字結合と対角、余対角を組み合わせると、提示する名前を減らさない(privateにしない)結合になる。

再帰的な定義(定義の再帰化)がトレースに対応しているから、モジュール集約をモノイド積、モジュールの直列結合を結合とするレース付きモノイド圏で、名前により自然にGoI構成がなされているらしい。リネームや隠蔽(hiding)なども圏論的な定式化ができる。

それと、モジュール名やパッケージ名による修飾(qualify, prefix)を、直和を作るタギングとして捉えることができる。これを考慮すると、importの構文は:

  • import type foo as bar from other.mod prefix m;

リネーミングとプレフィックシングはどちらから一方があれば足りる。リネームはやめてプレフィックシングだけにするほうが単純かも。