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

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

モジュールの演算5つはもっと簡単になる

大局的プログラミング(programming in the large)の話題。

ゴグエン先生の論文は "An Implementation-Oriented Semantics for Module Composition" だった。それで、MCLは、Module Composition Language の略でした。しかし、どっかで Connectingも使っていたと思う。

さて、5つのモジュール演算とは、

  1. aggrigation 弱モノイド積
  2. instantiation 結合
  3. renaming, 改名射の結合
  4. hiding, 射影=制限射の結合
  5. enriching、内部で結合(import)を実行

これらは結局、モノイド圏の基本演算である「積と結合」、それと特殊な射との結合に還元されてしまう。ここでの特殊な射(の族)とは、

  1. 制限射=射影
  2. 改名射=同型

ということだ。

ところで、import宣言があればMCLは要らないか? いや、MCLなしでは辛い。importはMCLがあれば別に要らない(あれば便利だ)。MDL(module description/definition language)とMCLをどう折り合い付けるか? が課題だな。


package foo.bar;
module M = module {
...
};

↑の略記が↓


package foo.bar;
module M;
....
EOF
とか。

MCLによるモジュール定義はこんなかな。


package foo.bar;

profile K provides a, b, c
and requires x, y;
profile L provides b, c, d;

module M = K, {e<-b, f<-c, d}L ;