I’m currently trying to fully understand category theory as it applies to programming. I’m not scared of math, however, I’m also not a mathematician, so I’m looking for an introduction that helps me build intuitive understanding first, and then goes all the way into the formalisms.
Here are the resources I am currently reading that I found the most helpful so far:
http://rs.io/why-category-theory-matters/
Quick intro on why it's useful and lots of links to resources of applications of category theory.
https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/
This is a collection of blog articles (which have also been compiled into a nicely typeset PDF) that I found to be an excellent guide in building up intuitive understanding for category theory. It constantly uses examples from both imperative (C++) and functional (Haskell) languages; it sure is helpful to know a little about C++ and Haskell, but I don’t think one needs to be fluent in either of those. The math is kept to a minimum, just enough to understand what’s necessary, without formalities getting in the way. I recommend starting with this one.
Bartosz Milewski also published three YouTube playlists with a video course of the same material, which roughly correspond to the three parts of the book:
- Category Theory • Bartosz Milewski
- Category Theory II • Bartosz Milewski
- Category Theory III • Bartosz Milewski
I found the videos to be an ideal companion for the book and watch the video before I read the more detailed and polished chapter in the book. The lessons are still good to watch and understand at 1.5x speed.
Seven Sketches in Compositionality: An Invitation to Applied Category Theory • Brendan Fong, David I. Spivak
Coming from the opposite end of the spectrum — the mathematical side — this book provides all the formal knowledge to fully understand category theory. It still builds up from practical examples that help with intuitive understanding, but this is clearly a university course textbook with full-on math plus exercises.
I attempted to start with this one and was quite happy, but then I discovered Bartosz Milewski’s video course and then book, which are a much simpler and more pragmatic (for programmers, at least) introduction to category theory. I am planning to finish reading Seven Sketches after I finished Bartosz’ book.
This book also comes with video lectures (which I haven’t watched yet). I’ve found two versions about the same material from as it seems both authors separately:
I haven’t watched either of those video series yet, hoping that my understanding from the first book will suffice to grasp the formal mathematics in Seven Sketches.
https://ncatlab.org/nlab/show/category+theory
With a basic understanding of category theory from the resources above (having worked through just the basic parts introducing categories, functions, and natural transformations is enough), this page offers a very good overview with pointers to lots more details about each concept in category theory, as well as further resources for every level of detail you can wish for.
I just found the very brief first few paragraphs very enlightening, describing the self-referential structure of category theory, which helps building a mental map of how everything relates to everything else.
A few more resources I came across while looking for good explanations of category theory:
- What is Applied Category Theory? • Tai-Danae Bradley
- This looks promising for learning more about actual applications of the concepts.
- The Catsters' Category Theory Videos (Overview)
- Applied Category Theory Course by John Baez • Azimuth Forum
- This goes with the Seven Sketches course/book and might provide just a little more commentary on the material.
- Andre Staltz - Profunctor Optics for state management @FrontMania
- Douglas Crockford: Monads and Gonads (YUIConf Evening Keynote)
- Category Theory, The essence of interface-based design - Erik Meijer
- Graphical Linear Algebra