These are my notes taken from the video lessons by Bartosz Milewski about Category Theory for Programmers. You can find the videos in Youtube:
- Motivation and Philosophy
- What is a category?
- Functions, epimorphisms
- Monomorphisms, simple types
- Examples of categories, orders, monoids
- Kleisli category
- Terminal and initial objects
- Products
- Coproducts, sum types
- Algebraic data types
- Functors
- Functors in programming
- Functoriality, bifunctors
- Monoidal categories, Functoriality of ADTs, Profunctors
- Function objects, exponentials
- Type algebra, Curry-Howard-Lambek isomorphism
- Natural transformations
- Bicategories
- Monads
- Monoid in the category of endofunctors
- Declarative vs. Imperative
- Limits
- Limits, Higher order functors
- Limits, Naturality
- Examples of Limits and Colimits
- Free Monoids
- Representable Functors
- Yoneda Lemma
- Yoneda Embedding
- Adjunctions
- Examples of Adjunctions
- Free-Forgetful Adjunctions, Monads from Adjunctions
- Comonads
- Comonads categorically and examples
- F-Algebras, Lambek's Lemma
- Catamorphisms and Anamorphisms
- Lenses
- Lenses categorically