圏論とソフトウェア
だいたいの感じは掴めた。
概念 | 表現方法 | ソフトウェア |
---|---|---|
圏 | コンピュータッド | データ(JSO形式?) |
ドクトリン | 等式的仕様 | 拡張機能 |
圏はドクトリンに所属するが、プレーンドクトリン=単なる圏は最初から入っている。システムコアには、銀河に相当する唯一のメタドクトリンがあり、メタドクトリンのメンバー(対象)としてプレーン・ドクトリンCatがある。ただ、ドクトリンCatのインスタンスを作っても出来ることは限られているので、拡張機能=カスタムドクトリンは必須だろう。カスタムドクトリンによってプレーンドクトリンは拡張されて、そのインスタンスである圏は付加的機能性〈feature〉を持つことになる。
システム内部をワーキングワールド、または単にワールドと呼ぶ。ワールドのルートとしてメタドクトリンが1個あり、ドクトリン=拡張機能が幾つかぶら下がる。ドクトリンに関しては、動的モジュールロード機能が必要だろう。
ドクトリンのインスタンスは動的に作ってもよいし、ストレージから(データとして)ロードしてもよい。
ソフトウェアコンポネントとしては、ブラウザとエディタがある。ブラウザは、ワールド内を探索するときに使う。存在している全てのドクトリン、それぞれのドクトリンに所属する圏(データとしてはコンピュータッド)、コンピュータッドの内部をインスペクトできる(インスペクターと言っても同じ)。
ブラウザがワールド内をくまなく探索できるのに対して、エディタは特定の圏に紐づく。圏に対してエディタが起動されると、圏が所属するドクトリンによりコマンドセットを確定して、利用可能なコマンドを提示する。作業場所であるスクラッチパッドを準備して、スクラッチパッド内で式=ダイアグラムを作る。
エディタで作った式は、もとの圏(コンピュータッド)に追加〈add〉してよい。
エディタは、CRUD操作のRしてCする部分を担当する。UpdateはなくAddなので、RCAD〈ルカッド〉操作になる。
おそらく:
- 単一のワールドブラウザ
- コレクティブ/アイテムの種類ごとのビューワー
- コレクティブに対してアイテムピッカー
- 圏(コンピュータッド)に対するエディタ
- システム全体を操作するコントローラー
- UI上の配置を作るコンテナ
ブラウザ、ビューワー、ピッカー機能は混合してしまい、明確に区別はできないような気がする。
コマンドは、
- オペレーションコマンド=オペレーター
- リライトコマンド=リライター
ただし、オペレーターとリライターの境界も実はあいまい。リライターのほうは、“実行”を行うエバリュエータ〈エバル〉が付いてくる点が違う。それ以外の差はない。