abstract
| - In computer programming, particularly functional programming and type theory, an algebraic data type (sometimes also called a variant type) is a datatype each of whose values is data from other datatypes wrapped in one of the constructors of the datatype. Any wrapped datum is an argument to the constructor. In contrast to other datatypes, the constructor is not executed and the only way to operate on the data is to unwrap the constructor using pattern matching. The most common algebraic data type is a list with two constructors: Nil or [] for an empty list, and Cons (an abbreviation of construct), ::, or : for the combination of a new element with a shorter list (for example Cons 1 [2, 3, 4] or 1:[2,3,4]). Special cases of algebraic types are product types i.e. tuples and records (only one constructor), sum types or tagged unions (many constructors with a single argument) and enumerated types (many constructors with no arguments). Algebraic types are one kind of composite type (i.e. a type formed by combining other types). An algebraic data type may also be an abstract data type (ADT) if it is exported from a module without its constructors. Values of such a type can only be manipulated using functions defined in the same module as the type itself. In set theory the equivalent of an algebraic data type is a disjoint union – a set whose elements are pairs consisting of a tag (equivalent to a constructor) and an object of a type corresponding to the tag (equivalent to the constructor arguments).
|