ユグドラシル・エクスプローラー
我々が何かするときの文脈を世界〈world〉と呼んでしまおう。世界は次のもので出来ていると思っていい。
- 編成〈organization〉ツリー
- 項目ネット
世界にある個体を項目〈item〉と呼んでいるが、それらの項目達がどのような組織構造を持つかを決めているのが編成ツリー。編成ツリーの別名がユグドラシル。
ユグドラシルはツリーなのでパスでアクセスできる。ユグドラシルのノードはコレクティブ〈集団〉と呼ぶ。まず、ルートノード=ルートコレクティブはworld.root で取得できるとする。コレクティブはobj型コレクティブとhom型コレクティブに分類されて、次のドット記法でアクセスする。
- C.objSet : コレクティブCのobjセット〈obj型コレクティブ〉
- C.objSet[A] : コレクティブCのobjセット内のAという名前の項目
- C.obj(A) : 上に同じ(略記)
- C.homSet(A, B) : コレクティブCのhomセット〈hom型コレクティブ〉
- C.homSet(A, B)[f] : コレクティブCのhomセット内のfという名前の項目
- C.mor(f, A, B) : 上に同じ(略記)
パス構文を示す。まずは相対パス。
- . : 現在のユグドラシルノード。ノードは常にコレクティブ。コレクティブが同時に項目であることはある -- 排他的概念ではない。
- ./* : 現在のユグドラシルノードが持つ対象の一覧(リスト)。C.objSetのダンプ
- ./ : 「.」か「./*」のどちらか、解釈は文脈による。
- ./A : 現在のユグドラシルノードCに対するC.objSet[A]。この項目がコレクティブであればエクスプローラーが扱う。コレクティブでない場合は、項目種〈kind〉固有のビューワーで閲覧する。
- ./A,B : 現在のユグドラシルノードCに対するC.homSet(A, B)。これは常にコレクティブ。空コレクティブかも知れない。
- ./A,B/* : C.homSet(A, B)のダンプ。項目(射)のリスト。
- ./A,B/ : ./A,B または ./A,B/* のどちらか。
お尻のスラッシュの意味が確定してないが、世の中的にも定まっていない。エクスプローラーと項目ビューワーとの連携のためにはこの辺を決めないといけない。