PDF, 169 pages
English language
Published Jan. 7, 2020
Brendan Fong, Bartosz Milewski, David I. Spivak: Programming with Categories (EBook)
PDF, 169 pages
English language
Published Jan. 7, 2020
Lecture notes from MIT course 18.S097. Course information is available at brendanfong.com/programmingcats.html.
This book is about how to think using category theory. What does this mean? Category theory is a favorite tool of ours for structuring our thoughts, whether they be about pure math, science, programming, engineering, or society. It’s a formal, rigorous toolkit designed to emphasise notions of relationship, composition, and connection. It’s a mathematical tool, and so is about abstraction, stripping away details and noticing patterns; one power it gains from this is that it is very concise.
In this book, we’ve chosen programming, in particular functional programming, as the vehicle through which we’ll learn how to think using category theory. This choice is not arbitrary: category theory is older than digital computing itself, and has heavily influenced the design of modern functional programming languages such as Haskell. As we’ll see, it’s also influenced best practice for …
Lecture notes from MIT course 18.S097. Course information is available at brendanfong.com/programmingcats.html.
This book is about how to think using category theory. What does this mean? Category theory is a favorite tool of ours for structuring our thoughts, whether they be about pure math, science, programming, engineering, or society. It’s a formal, rigorous toolkit designed to emphasise notions of relationship, composition, and connection. It’s a mathematical tool, and so is about abstraction, stripping away details and noticing patterns; one power it gains from this is that it is very concise.
In this book, we’ve chosen programming, in particular functional programming, as the vehicle through which we’ll learn how to think using category theory. This choice is not arbitrary: category theory is older than digital computing itself, and has heavily influenced the design of modern functional programming languages such as Haskell. As we’ll see, it’s also influenced best practice for how to structure code using these languages.