ハイパーインスティチューションとシステムボキャブラリー
システムボキャブラリーは、2つの構成要素からなる。
- ディヴィジョンに付けるラベルの集合
- パーザーに変更を加える構文マクロの集合
キーワード(予約語)のほとんどは、ディヴィジョンのラベル。したがって、ディヴィジョンのラベルを変えると雰囲気がガラッと変わる。ディヴィジョンは本来、圏名と次元だから、ラベルをどう変えても大丈夫。
ディヴィジョン構文は、@Set@1 とか @Logic[unit]@0 とかの変な構文でもいいかも。ボキャブラリー定義は、
keyword type @Set@0 keyword function @Set@1 keyword proposition @Logic@0 // ...
JSONでもいいか、
var keywords = { "type" : "@Set@0", "function" : "@Set@1", "proposition" : "@Logic@0", // ... }
ディヴィジョニング記号も @:@0, @:@1 とかでいいか。
delimiter in @:@0 delimiter : @:@1 delimiter :: @:@2 // ...
構文マクロは、あるパターンの構文木フラグメントを見つけると、それを書き換えて別なツリーを生成する。例えば、value x : X を function x: ->X に。これは、value x @:@1 X から @Set@1 x @:@1 @0@Set@0 @>@1 X への書き換えかな(@0@Set@0は、集合圏の0次元の基礎対象)。