宣言空間
TypeScriptでは、名前空間とは別に宣言空間というのがあって、そこに名前が登録されるらしい。例えば、型名は「型の宣言空間」内に名前を持つ。
だが、これってやっぱり名前空間だと思う。型の名前空間は、圏の対象集合=0-ホムセットを名前空間だと思ってそこに登録されると思えばよい。値は 1→X in C だから、ホムセット Hom1(1, X) = C1(1, X)を名前空間だと思ってそこに登録される。
名前空間の宣言空間というのがややこしい。実際的には、名前空間は階層的モジュールを定義する。ということはモジュール名の名前空間が「名前空間の宣言空間」となる。モジュール名は、意味領域にはなくて、構文領域にあるから。構文領域側の名前空間が「名前空間の宣言空間」の実体になるだろう。インスティチューションを持ち出さないと解釈できないと思う。
代数的データ型、余代数的データ型とかもそうだけど、インスティチューションとそのモデル圏、モデル圏のなかでの構成(極限や余極限)がないとうまく説明できない。
[追記]entityのcontainerという概念も面白い。TypeScriptは割とマジメに名前構造を考えている。[/追記]