The algebra (and calculus!) of algebraic data types Joel Burget Note: This article assumes some introductory Haskell knowledge. Introduction Just as algebra is fundamental to the whole of mathematics, algebraic data types (ADTs) are fundamental to many common functional programming languages. They’re the primitives upon which all of our richer data structures are built, including everything from s