Map の代数的構造と差分によるプログラミング
Set[A] は Map[A, Boolean] とほぼ同じとみなせる。すると集合の積(共通部分)の実装が論理積から導けるし、集合の和も論理和から導ける。さらに Map[A, Int] とすれば多重集合についても同様に導ける。
2017-10-01 16:41:00そうなのよね。関係は合成のことを考えればA×Bの部分というよりもAからPow(B)と考えた方がいい。Powはモナドになるのでクライスリ圏が関係の圏と同じというのもあるので。
2017-10-01 17:04:00かつ、Pow と 2^(_) が同型になることも面白くて、2からの類推でNatを考えれば、Nat^(_)はまさに多重度付きのことなのよね。というよりむしろ、Natの和を冪等により積み上がらないことで2になったとも言える。
2017-10-01 17:05:55A×Bの部分 あるいは A -> B -> 2 あるいは A -> Pow(B) は 2値の行列として表現できるので、、といろいろ考えると豊かな世界が待ってる。 twitter.com/e_do_kiriko/st…
2017-10-01 17:11:05d.hatena.ne.jp/m-hiyama/20140… から関係の圏で対角と余対角から関係R,S : X -> Yの和R∨S : X -> Yを作る操作を行列で確かめてる. pic.twitter.com/L8BT2AYjik
2015-03-09 17:53:33最近得られた知見としては、 reactive programming 的な方向を突き詰めていくとデータ構造が mutable か immutable かという違いは捨象されてしまう、というものがあります。
2017-10-02 17:15:58データに対する不変条件やデータ間の関係性というものに着目して記述していくと、すべての瞬間において不変条件が満たされていればそれでよく、データの変更が破壊的かどうかは割とどうでもよいことになる。
2017-10-02 17:24:53最終的にはデータが可変か永続的かというのは、パフォーマンス・チューニングの観点から決まる問題ということになる。アプリケーションの仕様というレイヤーから考えればこれはとても自然。
2017-10-02 17:27:12あとは、プログラミングやDBの文脈では、あくまで代数的な構造が大事なのであって、集合や関係代数に限定して話を進める必要はないという認識にいったったのが最近の大きな変化です。
2017-10-02 17:33:28多項関係なんて持ち出さなくても、より小さな部品たとえばハッシュマップに対して代数的な演算を定義することは出来るし、段階的に物理層や実行計画を抽象化していくということも可能だったということです。
2017-10-02 17:39:43個人的には二項関係に着目してやってきましたが、データ構造のネストについて考えるうちに、単なる Map 的な構造に解体されてしまった感じです。
2017-10-02 17:43:11別に Map を特別扱いするというわけでもありません。リストでも優先度付きキューでもなんでも必要に応じて使えばよい。それくらいでないと領域によっては使いづらい。
2017-10-02 17:45:06React が解決したのって雑に言うと「ViewModel のスナップショットからDOMを生成するのは簡単でも、 ViewModel の状態の差分から DOM の差分を生成するのは難しい」という問題だと思ってる。
2017-10-02 22:17:38React が解決した問題と解決できてない問題があって、それは関数プログラミングでも関係データベースでも同じなんだけど、どうしても全面的な否定か肯定かに偏りがちであることだなあ。
2017-10-03 20:21:27新しいものを導入する際にその良い面が強調されがちなのは受け手側も割り引くだろうから良いとして、ある程度普及した手法に対して利点欠点両面からの分析がいまいち見当たらなかったりするのはなぜなんだぜという気持ちです。
2017-10-03 20:34:02@pokarim すいません、面白かったので勝手ながらまとめを作らせて頂きました。問題がありましたらご指摘ください。 togetter.com/li/1157369
2017-10-03 23:20:08@okapies 了解です。面白かったですか。面白さがうまく伝えられてるか、いまいち手応えがなくてよくわからなかったので、少しでも共有できたのなら嬉しいです。
2017-10-03 23:45:38GraphQL みたいな方向に行くと、最終的にはバリデーション含めた各種制約条件を如何に宣言的に定義するかということが問題になるんじゃないかと思います。
2017-10-04 00:01:54