Type constructors

Just as values are built using data constructors, types are built from type constructors. Nullary type constructors like Nat, Int, Float are already types, but other type constructors like List and -> (see built-in type constructors) take type parameters in order to yield types. List is a unary type constructor, so it takes one type (the type of the list elements), and -> is a binary type constructor. List Nat is a type and Nat -> Int is a type.