At Tiny, we use Functional Programming in all our product developments, like Tiny Cloud. Functional Programming draws from mathematics at its core, and it restricts your programming to mathematics techniques (for example, Logic, Algebra, Set Theory, and Type Theory).

Category Theory represents another mathematics technique that we draw from, for Functional Programming. This theory is all about abstraction. It deals with abstractions of mathematical structures and patterns. It’s a foundational branch of maths because its abstractions have many different applications in different contexts.

Because programming uses structures, patterns, and abstractions, Category Theory is incredibly useful for developers. For example, concepts like Monads, Monoids, and Functors that appear in software development come from Category Theory.

## Category Theory resources for Functional Programming

If you're seeking more in-depth information on functional programming for you or your development team, here are some recommendations to help you learn the core concepts of category theory.

### 1. A book resource on Category Theory

Eugenia Chen’s fantastic book “How to bake pi” (“Cakes, Custard and Category Theory”) is a gentle introduction to complex maths that sets the scene for Category Theory. Her baking analogies are just beautiful, and the book is a joy to read.

### 2. A recorded presentation on Category Theory

On a more programmer-centric note, Ken Scambler does a great talk on introductory category theory. The diagrams in his slides are really well done, and he’s a great presenter.

### 3. Recorded lectures on Category Theory

The best resource we've found for learning is the “Category Theory for Programmers” lecture series by Bartosz Milewski. The videos are split into two series. The videos are incredibly well-paced and he nails the programmer’s perspective by tying it to Haskell code.

He goes right into all the important details and explains core concepts brilliantly. We found it the perfect bridge between applied functional programming in Haskell/Scala and Category Theory itself. We can’t recommend it highly enough.