This blog post explains why algebraic data types are “algebraic” - how every algebraic data type corresponds to a mathematical equation - and describes some ways to use a type’s corresponding equation to reason about the type itself.