Frequent Links
Type constructor
In the area of mathematical logic and computer science known as type theory, a type constructor is a feature of a typed formal language that builds new types from old. Typical type constructors encountered are product types, function types, power types and list types. Basic types are considered nullary type constructors. New types can be defined by recursively composing type constructors.
For example, simply typed lambda calculus can be seen as a language with a single type constructor—the function type constructor. Product types can generally be considered "builtin" in typed lambda calculi via currying.
Abstractly, a type constructor is an nary type operator taking as argument zero or more types, and returning another type. Making use of currying, nary type operators can be (re)written as a sequence of applications of unary type operators. Therefore, we can view the type operators as a simply typed lambda calculus, which has only one basic type, usually denoted <math>*</math>, and pronounced "type", which is the type of all types in the underlying language, which are now called proper types in order to distinguish them from the types of the type operators in their own calculus, which are called kinds.
Instituting a simply typed lambda calculus over the type operators results in more than just a formalization of type constructors though. Higherorder type operators become possible. (See Kind (type theory) for some examples.) Type operators correspond to the 2nd axis in the lambda cube, leading to the simply typed lambdacalculus with type operators, λ_{ω}; while this is not so well known, combining type operators with polymorphic lambda calculus (system F) yields system Fomega.
See also
References
 Pierce, Benjamin (2002). Types and Programming Languages. MIT Press. ISBN 0262162091., chapter 29, "Type Operators and Kinding"
 P.T. Johnstone, Sketches of an Elephant, p. 940
Lua error in package.lua at line 80: module 'Module:Buffer' not found.
