こうしてみると,関数型を集合論的な「関数全体の集合」としてみなすのはかなり問題がありそうです.いったん Haskell に寄り添って型が何を表しているか考えてみなければならないようです.Haskellを数学的に扱う際はこうした部分にトリックがあるわけです.
論理には飛躍はないけど、説明の飛躍があると思う。「トリック」があることを示唆するのなら、もう少し具体的に書くべきでは。あるいはこの段落を後ろに移すとか。
関数型についてはどうでしょうか?よく考えると,Double → Int がInt → Double の部分型になってくれたらうれしいです.
ここ非直感的なとこだしもう少し細かく説明した方がいいと思う。
プロ関手(profunctor)
前関手じゃだめなの?
関手の話から突然 System F の話に切り替わってて戸惑う。これが以降でどう役立つかみたいな説明がほしい。
以前指摘したところは https://gist.github.com/yingtai/11219306 の 16 ページ以降。
不安かもしれませんが
を修正:
これだけでは不安かもしれませんが
演算 → : U×U→U と ∀ : U→U→U
意味論の方の → や ∀ は別の記号に変えないと分かりにくいと思う。
A[B/X] は, A→ を拡張したもので,
置換の話ですって一言書いておいた方が親切。
ϕA,B : D_A→B → (D_A → D_B)
これはインフォーマルな表記?よく分かんなくなってきた。