Through its unique, multi-faceted teaching style, this book provides an in-depth introduction to mathematical functions like set theory and abstract algebra, then uses those ideas to explain functional programming design patterns, and how they're implemented in code. Particular emphasis is given to the modern mathematical framework of 'category theory,' which studies how functions transform classes of objects in specialized ways. In addition, there are over 500 bite-size coding exercises to help readers master the dual arts of functional programming and advanced mathematics.