プログラマーのための圏論
https://gyazo.com/6ecf58e5740aba91bef9e19534c89fe3
原著: https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/
元となった日本語訳: https://github.com/ktgw0316/milewski-ctfp-markdown/
https://www.ohmsha.co.jp/book/9784274234866/
〈本書のポイント〉
・C++ と Haskell のコードを使って、圏論 の概念を解説した
・数学書のような 定理 ⇒ 証明 の繰り返しではなく、プログラマーの慣れている技術書な解説とした
近年の並列・並行 プログラミングにおける安全性確保では、共有可変状態に依存する設計の難しさが指摘されています。こうした課題への有力なアプローチの一つが関数型プログラミングであり、その背景として圏論(けんろん)が重要な役割を果たします。圏論は 型理論 や ラムダ計算 と並ぶ理論的基盤の一つです。
関心の高いプログラマーは、命令型言語 に導入された ラムダ式 などの 関数型プログラミング のアプローチから 関数型言語 に興味をもったり、命令型と異なる関数型という パラダイム に対する関心をもったりするなかから関数型言語を学びます。そのなかの一部は、理論的背景となる圏論にも興味を持ちます.
しかし『ベーシック圏論』や『圏論の基礎』を前にして、数学的素養というハードルの高さを感じる読者も少なくありません。圏論は大学で学ぶような数学の一分野なのです。
本書は、数学書のような定理と証明の反復ではなく、プログラマーが親しみやすい技術書スタイルで圏論の核心を解説します。主要概念を C++ と Haskell のコードで具体化し、Haskellについては未経験者にも配慮して段階的に説明します(ただし、C++の基礎文法の理解は前提とします)。
一般的な入門から、モナド/コモナド、カン拡張、豊穣圏、トポス、ローヴェア理論 といった発展的話題まで、段階的に橋渡しします。これにより、関数型プログラミングの理解を深め、日々の設計・実装に新たな視点をもたらすことを目指します。
圏論に関心はあるものの数学的背景に不安がある方、関数型の理解を理論面から補強したいプログラマーに適した一冊です。
目次
1. 圏:合成の本質
2. 型と関数
3. 圏のさまざま
4. クライスリ圏
5. 積と余積
6. シンプルな代数的データ型
7. 関手
8. 関手性
9. 関数型
10. 自然変換
11. 宣言的プログラミング
12. 極限と余極限
13. 自由モノイド
14. 表現可能関手
15. 米田の補題
16. 米田埋め込み
17. 射こそすべて
18. 随伴
19. 自由/忘却随伴
20. モナド:プログラマーの定義
21. モナドと計算効果
22. 圏論から見たモナド
23. コモナド
24. F-代数
25. モナドの代数
26. エンドとコエンド
27. カン拡張
28. 豊穣圏
29. トポス
30. ローヴェア理論
31. モナド・モノイド・圏
#読書メモ #圏論 #数学 #Haskell