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

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

圏論とソフトウェア

だいたいの感じは掴めた。

概念 表現方法 ソフトウェア
コンピュータッド データ(JSO形式?)
ドクトリン 等式的仕様 拡張機能

圏はドクトリンに所属するが、プレーンドクトリン=単なる圏は最初から入っている。システムコアには、銀河に相当する唯一のメタドクトリンがあり、メタドクトリンのメンバー(対象)としてプレーン・ドクトリンCatがある。ただ、ドクトリンCatのインスタンスを作っても出来ることは限られているので、拡張機能=カスタムドクトリンは必須だろう。カスタムドクトリンによってプレーンドクトリンは拡張されて、そのインスタンスである圏は付加的機能性〈feature〉を持つことになる。

システム内部をワーキングワールド、または単にワールドと呼ぶ。ワールドのルートとしてメタドクトリンが1個あり、ドクトリン=拡張機能が幾つかぶら下がる。ドクトリンに関しては、動的モジュールロード機能が必要だろう。

ドクトリンのインスタンスは動的に作ってもよいし、ストレージから(データとして)ロードしてもよい。

ソフトウェアコンポネントとしては、ブラウザとエディタがある。ブラウザは、ワールド内を探索するときに使う。存在している全てのドクトリン、それぞれのドクトリンに所属する圏(データとしてはコンピュータッド)、コンピュータッドの内部をインスペクトできる(インスペクターと言っても同じ)。

ブラウザがワールド内をくまなく探索できるのに対して、エディタは特定の圏に紐づく。圏に対してエディタが起動されると、圏が所属するドクトリンによりコマンドセットを確定して、利用可能なコマンドを提示する。作業場所であるスクラッチパッドを準備して、スクラッチパッド内で式=ダイアグラムを作る。

エディタで作った式は、もとの圏(コンピュータッド)に追加〈add〉してよい。

エディタは、CRUD操作のRしてCする部分を担当する。UpdateはなくAddなので、RCAD〈ルカッド〉操作になる。

おそらく:

  1. 単一のワールドブラウザ
  2. コレクティブ/アイテムの種類ごとのビューワー
  3. コレクティブに対してアイテムピッカー
  4. 圏(コンピュータッド)に対するエディタ
  5. システム全体を操作するコントローラー
  6. UI上の配置を作るコンテナ

ブラウザ、ビューワー、ピッカー機能は混合してしまい、明確に区別はできないような気がする。

コマンドは、

  1. オペレーションコマンド=オペレーター
  2. リライトコマンド=リライター

ただし、オペレーターとリライターの境界も実はあいまい。リライターのほうは、“実行”を行うエバリュエータ〈エバル〉が付いてくる点が違う。それ以外の差はない。