圏論の教材
Haskellの本を読みつつ、興味が湧いたのでLispの本も読んでいました。
型の話抜きで、関数型プログラミングの基礎を学ぶ場合、Lispもあり?
Lispは関数型言語の先祖であり、マクロという便利な道具もあるので、今でも学ぶ価値はあると思います。
さて、Lispの本を読み終えて、またHaskellの本に戻るのですが、知識習得の方向性について、少し吟味。
Haskell本の読書と同時並行で圏論もかじってみたいです。(時間的余力があれば)
まあ、いずれは避けて通れない道ですね?
圏論の資料
「圏論」について検索したら、いろいろ資料が見つかったのでメモ。
圏論の入門書
圏論の道案内 ~矢印でえがく数学の世界~ (数学への招待シリーズ)
- 作者: 西郷甲矢人,能美十三
- 出版社/メーカー: 技術評論社
- 発売日: 2019/08/09
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
圏論の教材まとめ
ここで紹介されていた圏論の教材を読んでみたら良いかも。
日本語、英語の資料あり。
とりあえず「Category Theory for Programmers Scala Edition」に出てきた概念の中で、プログラマが学んでおいた方が良いと思うものを以下に分類してみました。これはあくまで数学が苦手な圏論入門者である自分の私見です。
- 必ず学んでおきたい
- できれば学んでおきたい
- 余力があれば学んでおきたい
- ホム関手、表現可能関手
- 米田の補題、米田埋め込み
- 極限と余極限
- 随伴
- カリー=ハワード同型
- 興味があれば学んだ方が良い
- エンド
- カン拡張 ←
全ての概念
- 豊穣圏
- トポス
- ローヴェア理論
圏論の話題はたくさんあるんですね。
とりあえず基本だけでいいや。
もっと圏論を学びたい人向けのオンラインで読めるオススメ資料
残念ながら本記事の趣旨には合いませんでしたが、プログラマが圏論を学ぶ上でぜひオススメしたい資料です。
- 説明がHaskellベースですが非常に丁寧で分かりやすいです
- 上、中、下
物理学者のための圏論入門
- 物理学者ではなくても圏論の基本的な概念を理解できる非常にオススメの資料です
- 特に普遍射の説明が秀逸で、会社組織に擬えての説明がツボりました
圏論によるプログラミングと論理
- 灘校パソコン研究部の部誌(2013年)に掲載されていたものです
- 普通に書店に並んでいてもおかしくないボリュームとクオリティです
- 圏論だけでなく数学やコンピュータサイエンスの基礎も補完しています
圏論 | 壱大整域
灘高の資料がスゴイと思いました。
高校生でも理解できるなら、自分にも理解できるはずだと思いたいですw
とりあえず、灘高の資料を足掛かりとして、他の資料も当たってみればいいかな?
名古屋大学 大学院情報学研究科 谷村省吾教授の資料
「物理学者のための圏論入門」 研究会「量子と古典の物理と幾何」にて講演(2017年2月)
http://www.phys.cs.is.nagoya-u.ac.jp/~tanimura/lectures/tanimura-category.pdf
灘校パソコン研究部 2013年部誌 圏論によるプログラミングと論理(PDF)
https://www.npca.jp/works/magazine/2013_10/
その他
なんのことはない、Array で言えば、普通の Array.map に Array.flat を付け加えたものがモナドになります。 unit というのは、[] なので最初からあるといえばありました。
↑こちらのブログには、圏論やHaskellに関する記事がたくさんありました。
参考のために一読してみたいです。
英語の動画ですが、日本語の字幕がつけられていました!
(字幕を付けてくれた方、どうもありがとうございます。)
まとめ
Haskellや型の話ってのは、その背景に圏論があるってことですよね?
数学を専攻しなかったので、圏論の厳密な理解はさておき、Haskellの理解を助ける程度の基礎知識を得ることを目標にしてみたいです。