「圏論」は関数プログラミングの「モナド」に役立つ。入門PDF等のリンク集
圏論を学ぶ目的は,HaskellやScalaなどの関数型プログラミング言語をよく理解するため,としてよい。
モナドを実装するために必要という応用がある。
オンラインで圏論を学ぶための教科書:
「圏と関手入門」
http://www.math.nagoya-u.ac.jp/~hasim...
- 100ページ以上あるオンライン入門書
- 圏論は面白い(1) メタグラフ : tnomuraのブログ
- 圏論は面白い(3) メタ圏 : tnomuraのブログ(2は存在しない)
- 圏論は面白い(4) メタ圏(2) モノイド : tnomuraのブログ
- 圏論は面白い(5) 関手 : tnomuraのブログ
- 圏論は面白い(6) 自然変換 : tnomuraのブログ
- 圏論は面白い(7) 随伴 : tnomuraのブログ
- 圏論は面白い(8) モナド : tnomuraのブログ
- 圏論の攻略法 : tnomuraのブログ(オブジェクトが何か、射がなにかということは置いておいて、オブジェクトと射の代数を学ぶつもりで)
- プログラマのための圏論攻略法 : tnomuraのブログ(プログラマが圏論を学習したいと思う理由の第一はIOモナドを理解したいという欲求)
- 圏論の言葉 : tnomuraのブログ(Haskell の記法は圏を記述するのに便利)
- 圏論の言葉 その2 : tnomuraのブログ(point は集合の要素の一個を関数で表現したものだが、集合の全射や、単射を圏論の言葉で扱うときに重要)
役に立つ読み物
圏論の初歩を理解するためのWeb上での無料の読み物:
圏論を小学生にも分かるように説明するスレ | 2ch勉強・学問まとめ
http://gakumon-matomeread.doorblog.jp...
- 圏を「対象」と「射」で説明するのは冗長だ。 射だけあれば良い。 射と射が結合して射になる所が本質。 「対象」は単位射と同じ。 このくらい単純化すれば小学生にも説明できる。
- 圏論ってざっくり言うと例え話の理論じゃねーの。話が圏,話の登場人物が対象,登場人物間のやりとりが射
- 「ある話を別の話に例える」という操作、すなわち例え話が関手
- 2通りの例え話ができるけど実質同じだよねーってのが自然変換
はじめての圏論 その第1歩:しりとりの圏 - 檜山正幸のキマイラ飼育記
http://d.hatena.ne.jp/m-hiyama/200608...
- 「"あ";"あか" = "あか"」の例から分かるように、1文字だけからなる文字列(長さ1の列)は単位のような働きを持ちます。
Modegramming Style: 圏論デザインパターン
http://modegramming.blogspot.jp/2012/...
- 関手(functor):2つの圏間の構造保持するマッピング
関数プログラミングと関連が深い
圏論とHaskellのかかわりについて:
Haskellと圏論入門 - いじわるだねっ
http://d.hatena.ne.jp/Lost_dog/201112...
Haskell/圏論 - Wikibooks
http://ja.wikibooks.org/wiki/Haskell/...
- モナドは言うまでもなく Haskell の極めて重要な概念であるが、実はこれらは本来,圏論に由来するものである。
- モナドは圏から同じ圏への関手であり、さらにいくつかの追加の構造を提供する。
Functorを例として、圏論とHaskellの関係を分かりやすく説明してみるテスト - めもめも
http://d.hatena.ne.jp/enakai00/201309...
計算機科学のための圏論
http://pantodon.shinshu-u.ac.jp/topol...
- Kleisli category というのはいつ誰が考えた概念かわからないが, Haskell の実装の中で重要な位置を占めている
とくに,モナドを考えるために圏論が必須!
モナドと圏論の関連性について:
圏論のモナドとHaskellのモナド
http://www.slideshare.net/yoshihiromi...
モナド (圏論) - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%A...
- モナドという名前は、「対応する圏を一般化する」というモナドの動作に注目して、ソーンダース・マックレーンが哲学用語である「モナド」を借用した
モナド - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%A...
- モナド(Monad)は、ライプニッツ が案出した空間を説明するための概念
Scalaで関数型プログラミングをする#3 圏論を学ぶ(前) | Developers.IO
http://dev.classmethod.jp/etc/func-pr...
- scalazに関する記事を見ると、「モナド」とか「関手」とかのキーワードが多く使用されています。
- そのキーワード自体がよくわからないので、それを調べていくと「圏論」にいきつくわけです。
- そのため、圏論の初歩的なものは学ぶ必要がある
圏論やモナドが、どうして文書処理やXMLと関係するのですか? - 檜山正幸のキマイラ飼育記
http://d.hatena.ne.jp/m-hiyama/200701...
- テンプレート処理が、もろにモナドになっている、ってハナシ
本格的に学ぶには?
圏論の有名な教科書:
圏論による論理学―高階論理とトポス 感想 清水 義夫 - 読書メーター
http://book.akahoshitakuya.com/b/4130...
株式会社サイエンス社 株式会社新世社 株式会社数理工学社
http://www.saiensu.co.jp/?page=book_d...