For some time now I’ve been oating the idea of writing a book about category theory that would be targeted at programmers. Mind you, not computer scientists but pro- grammers — engineers rather than scientists. I know this sounds crazy and I am properly scared. I can’t deny that there is a huge gap between science and engineering be- cause I have worked on both sides of the divide. But I’ve al- ways felt a very strong compulsion to explain things. I have tremendous admiration for Richard Feynman who was the master of simple explanations. I know I’m no Feynman, but I will try my best. I’m starting by publishing this pref- ace — which is supposed to motivate the reader to learn category theory — in hopes of starting a discussion and soliciting feedback.

This is an *unofficial* PDF version of "Category Theory for Programmers" by Bartosz Milewski, converted from his blogpost series.

- Preface
- I Part One
- Category: The Essence of Composition
- Arrows as Functions
- Properties of Composition
- Composition is the Essence of Programming
- Challenges

- Types and Functions
- Who Needs Types?
- Types Are About Composability
- What Are Types?
- Why Do We Need a Mathematical Model?
- Pure and Dirty Functions
- Examples of Types
- Challenges

- Categories Great and Small
- No Objects
- Simple Graphs
- Orders
- Monoid as Set
- Monoid as Category
- Challenges

- Kleisli Categories
- The Writer Category
- Writer in Haskell
- Kleisli Categories
- Challenge

- Products and Coproducts
- Initial Object
- Terminal Object
- Duality
- Isomorphisms
- Products
- Coproduct
- Asymmetry
- Challenges
- Bibliography

- Simple Algebraic Data Types
- Product Types
- Records
- Sum Types
- Algebra of Types
- Challenges

- Functors
- Functors in Programming
- The Maybe Functor
- Equational Reasoning
- Optional
- Typeclasses
- Functor in C++
- The List Functor
- The Reader Functor

- Functors as Containers
- Functor Composition
- Challenges

- Functors in Programming
- Functoriality
- Bifunctors
- Product and Coproduct Bifunctors
- Functorial Algebraic Data Types
- Functors in C++
- The Writer Functor
- Covariant and Contravariant Functors
- Profunctors
- Challenges

- Function Types
- Universal Construction
- Currying
- Exponentials
- Cartesian Closed Categories
- Exponentials and Algebraic Data Types
- Zeroth Power
- Powers of One
- First Power
- Exponentials of Sums
- Exponentials of Exponentials
- Exponentials over Products

- Curry-Howard Isomorphism
- Bibliography

- Natural Transformations
- Polymorphic Functions
- Beyond Naturality
- Functor Category
- 2-Categories
- Conclusion
- Challenges

- Category: The Essence of Composition
- II Part Two
- Declarative Programming
- Limits and Colimits
- Limit as a Natural Isomorphism
- Examples of Limits
- Colimits
- Continuity
- Challenges

- Free Monoids
- Free Monoid in Haskell
- Free Monoid Universal Construction
- Challenges

- Representable Functors
- The Hom Functor
- Representable Functors
- Challenges
- Bibliography

- The Yoneda Lemma
- Yoneda in Haskell
- Co-Yoneda
- Challenges
- Bibliography

- Yoneda Embedding
- The Embedding
- Application to Haskell
- Preorder Example
- Naturality
- Challenges

- III Part Three
- It's All About Morphisms
- Functors
- Commuting Diagrams
- Natural Transformations
- Natural Isomorphisms
- Hom-Sets
- Hom-Set Isomorphisms
- Asymmetry of Hom-Sets
- Challenges

- Adjunctions
- Adjunction and Unit/Counit Pair
- Adjunctions and Hom-Sets
- Product from Adjunction
- Exponential from Adjunction
- Challenges

- Free/Forgetful Adjunctions
- Some Intuitions
- Challenges

- Monads: Programmer's Definition
- The Kleisli Category
- Fish Anatomy
- The do Notation

- Monads and Effects
- The Problem
- The Solution
- Partiality
- Nondeterminism
- Read-Only State
- Write-Only State
- State
- Exceptions
- Continuations
- Interactive Input
- Interactive Output

- Conclusion

- Monads Categorically
- Monoidal Categories
- Monoid in a Monoidal Category
- Monads as Monoids
- Monads from Adjunctions

- Comonads
- Programming with Comonads
- The Product Comonad
- Dissecting the Composition
- The Stream Comonad
- Comonad Categorically
- The Store Comonad
- Challenges

- F-Algebras
- Recursion
- Category of F-Algebras
- Natural Numbers
- Catamorphisms
- Folds
- Coalgebras
- Challenges

- Algebras for Monads
- T-algebras
- The Kleisli Category
- Coalgebras for Comonads
- Lenses
- Challenges

- Ends and Coends
- Dinatural Transformations
- Ends
- Ends as Equalizers
- Natural Transformations as Ends
- Coends
- Ninja Yoneda Lemma
- Profunctor Composition

- Kan Extensions
- Right Kan Extension
- Kan Extension as Adjunction
- Left Kan Extension
- Kan Extensions as Ends
- Kan Extensions in Haskell
- Free Functor

- Enriched Categories
- Why Monoidal Category?
- Monoidal Category
- Enriched Category
- Preorders
- Metric Spaces
- Enriched Functors
- Self Enrichment
- Relation to 2-Categories

- Topoi
- Subobject Classifier
- Topos
- Topoi and Logic
- Challenges

- Lawvere Theories
- Universal Algebra
- Lavwere Theories
- Models of Lawvere Theories
- The Theory of Monoids
- Lawvere Theories and Monads
- Monads as Coends
- Lawvere Theory of Side Effects
- Challenges
- Further Reading

- Monads, Monoids, and Categories
- Bicategories
- Monads
- Challenges
- Bibliography

- Acknowledgments
- Index
- Colophon
- Copyleft notice

- It's All About Morphisms

#### Free Machine Learning Books

11 Books

- Pattern Recognition and Machine Learning (Information Science and Statistics)
- by Christopher M. Bishop
- Data mining
- by I. H. Witten
- The Elements of Statistical Learning: Data Mining, Inference, and Prediction
- by Various

#### Free Chemistry Textbooks

9 Books

- CK-12 Chemistry
- by Various
- Concept Development Studies in Chemistry
- by John Hutchinson
- An Introduction to Chemistry - Atoms First
- by Mark Bishop

#### Free Mathematics Textbooks

21 Books

- Microsoft Word - How to Use Advanced Algebra II.doc
- by Jonathan Emmons
- Advanced Algebra II: Activities and Homework
- by Kenny Felder
- de2de
- by

#### Free Children Books

38 Books

- The Sun Who Lost His Way
- by
- Tania is a Detective
- by Kanika G
- Firenze_s-Light
- by

#### Free Java Books

10 Books

- Java 3D Programming
- by Daniel Selman
- The Java EE 6 Tutorial
- by Oracle Corporation
- JavaKid811
- by

- Jamaica Primary Social Studies 2nd Edition Student's Book 4
- by Eulie Mantock, Trineta Fendall, Clare Eastland
- Reggae Readers Student's Book 1
- by Louis Fidge
- Reggae Readers Student's Book 2
- by Louis Fidge