Algebraic datatype

Summary