bXコンポネントの分類 2

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}

双方向データ変換子; 単方向データ変換子=関数 と考えての双方向化。

プログラムにおける“良きこと”:

  1. モジュラー〈modular〉である。良く仕様化された〈well-specified〉部品として機能する。IT用語の「モジュール」は加群ではない。
  2. 複合可能〈combosable〉である。組み合わせて使える。compositionは広義。

「システム=モジュールの複合体〈composite structure of modules〉」が理想。

bXコンポネント: 明確なインターフェイス〈外部仕様〉を持つ双方向変換を行う複合可能なモジュール。

個人的な話

  1. ~1990くらい -- 黒歴史
  2. 1995くらい ~ 2005くらい -- デスクトップアプリケーション
  3. 2005くらい ~ 2011くらい -- Webのサーバーサイドアプリケーション

1995以降は、デスクトップアプリケーションもWebアプリケーションも、まったく同一の方式〈アーキテクチャ〉を利用。プロジェクトにより、chimaira(ハイブリッドの意図), fungus〈fungi(複数) | 菌類〉(柔軟性の意図), Janus〈ヤヌス〉(二面、双面がポイント)などの名称。

bXコンポネントの概念(独自):

2011年以降はこのテのことから離れた。そして10年が経過した。とあるキッカケでオプティック理論に触れてビックリ。「これはやっていたぞ」と。


その他雑多

  1. bXコンポネントの例:Webサーバ側プログラム
  2. 単純オプティック=関数の順逆ペア={\bf Set} \times {\bf Set}^{\mathrm{op}} の射
  3. 一般のオプティック=残余出力と残余入力を持つペア、残余〈residual〉は外部から見えない
  4. オプティックの同値関係
  5. {データ}?レンズ: メモリー/ディスク/データベースなどへの双方向アクセス
  6. オプティックとレンズは同値 → 圏論的レンズ 訂正と補足: 具象レンズ=具象オプティック
  7. オプティックの集合はコエンドだった → https://ncatlab.org/nlab/show/end#explicit_definition
  8. プログラム意味論にコエンド計算を使うようになった一つの契機