TL;DR
- 圏論の考え方と、それがプログラミングにどう当てはまるかを、コード例とともに解説するプログラマ向けの本である。
- 著者によると、圏論はプログラムを合成可能にする構造を扱い、合成はプログラミングの本質でもある。
対象読者
計算機科学者ではなく、抽象的な数学に気後れしつつも使ってみたいエンジニアを想定している。圏論や関数型プログラミングの経験は前提にしていない。考えを書き表す言語にはHaskell を使い、使うたびに少しずつ説明する。Haskell を知らない読者のために C++ の例も載せている。
目次
Part One
- Category: The Essence of Composition
- Types and Functions
- Categories Great and Small
- Kleisli Categories
- Products and Coproducts
- Simple Algebraic Data Types
- Functors
- Functoriality
- Function Types
- Natural Transformations
Part Two
- Declarative Programming
- Limits and Colimits
- Free Monoids
- Representable Functors
- The Yoneda Lemma
- Yoneda Embedding
Part Three
- It’s All About Morphisms
- Adjunctions
- Free/Forgetful Adjunctions
- Monads: Programmer’s Definition
- Monads and Effects
- Monads Categorically
- Comonads
- F-Algebras
- Algebras for Monads
- Ends and Coends
- Kan Extensions
- Enriched Categories
- Topoi
- Lawvere Theories
- Monads, Monoids, and Categories