https://m-hiyama-second.hatenablog.com/entry/2021/11/29/164214 からの続き。
答: bXコンポネントのクラスはある程度うまくいく。
目的とする事実: オプティックbXコンポネントとレンズbXコンポネントは同値である。bXコンポネントの代表元〈実装パターン〉にレンズを取れる。
これはオプティック論の基本的・初等的な事実なのだが、最近まで檜山は認識してなかった(失態)。
「目的とする事実」に拘らないで、周辺の色々雑多なハナシ。
もし必要なら: https://jamboard.google.com/d/1sLKLL_w2L2PkmnCMvIPFe0gY5rLmO5QInXOyOwrU6zA/viewer?f=6
bXコンポネントとは
- bX = bidirectional {data}? {transformer | transform | transformation}
双方向データ変換子; 単方向データ変換子=関数 と考えての双方向化。
プログラムにおける“良きこと”:
- モジュラー〈modular〉である。良く仕様化された〈well-specified〉部品として機能する。IT用語の「モジュール」は加群ではない。
- 複合可能〈combosable〉である。組み合わせて使える。compositionは広義。
「システム=モジュールの複合体〈composite structure of modules〉」が理想。
bXコンポネント: 明確なインターフェイス〈外部仕様〉を持つ双方向変換を行う複合可能なモジュール。
個人的な話
- ~1990くらい -- 黒歴史
- 1995くらい ~ 2005くらい -- デスクトップアプリケーション
- 2005くらい ~ 2011くらい -- Webのサーバーサイドアプリケーション
1995以降は、デスクトップアプリケーションもWebアプリケーションも、まったく同一の方式〈アーキテクチャ〉を利用。プロジェクトにより、chimaira(ハイブリッドの意図), fungus〈fungi(複数) | 菌類〉(柔軟性の意図), Janus〈ヤヌス〉(二面、双面がポイント)などの名称。
bXコンポネントの概念(独自):
2011年以降はこのテのことから離れた。そして10年が経過した。とあるキッカケでオプティック理論に触れてビックリ。「これはやっていたぞ」と。
- Categories of Optics https://arxiv.org/pdf/1809.00738.pdf p.14 2.1 テレオロジー圏の図
- Composing optics https://www.ioc.ee/~mroman/data/notes/composingoptics.pdf p.14 5.2 テレオロジー圏の図
その他雑多
- bXコンポネントの例:Webサーバ側プログラム
- 単純オプティック=関数の順逆ペア= の射
- 一般のオプティック=残余出力と残余入力を持つペア、残余〈residual〉は外部から見えない
- オプティックの同値関係
- {データ}?レンズ: メモリー/ディスク/データベースなどへの双方向アクセス
- オプティックとレンズは同値 → 圏論的レンズ 訂正と補足: 具象レンズ=具象オプティック
- オプティックの集合はコエンドだった → https://ncatlab.org/nlab/show/end#explicit_definition
- プログラム意味論にコエンド計算を使うようになった一つの契機