An Algebraic Data Type is a data type that is build by composing other types. The two forms this takes in programming languages are the Sum Type and the Product Type. It gets its name from the mathematical concept of an Algebra.