algebraic data type

in computer programming, a type formed by combining other types