 Generalized algebraic data types were introduced independently by and prior by as extensions to ML's and Haskell's algebraic data types.Both are essentially equivalent to each other.They are similar to the "inductive families of data types" (or "inductive datatypes") found in Coq's Calculus of Inductive Constructions and other dependently typed languages, modulo the dependent types and except that the latter have an additional positivity restriction which is not enforced in GADTs.