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

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

ハイパーインスティチューションとシステムボキャブラリー

システムボキャブラリーは、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次元の基礎対象)。