モジュールの演算5つはもっと簡単になる
大局的プログラミング(programming in the large)の話題。
ゴグエン先生の論文は "An Implementation-Oriented Semantics for Module Composition" だった。それで、MCLは、Module Composition Language の略でした。しかし、どっかで Connectingも使っていたと思う。
さて、5つのモジュール演算とは、
- aggrigation 弱モノイド積
- instantiation 結合
- renaming, 改名射の結合
- hiding, 射影=制限射の結合
- enriching、内部で結合(import)を実行
これらは結局、モノイド圏の基本演算である「積と結合」、それと特殊な射との結合に還元されてしまう。ここでの特殊な射(の族)とは、
- 制限射=射影
- 改名射=同型
ということだ。
ところで、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 ;