Discriminated union, or disjoint union, is a data structure used to hold a value that could take on several different, but fixed types. They are also known as sum types in type theory. For [ocaml] use [variant] instead.