Type Functions
A type function is a type (is allowed to appear in a type definition) that has one or more parameters. An example of a type function is Set[Real].
A type function needs to be defined in the Types namespace or it won't be allowed to be used in the type definition.
All of the objects in the Types namespace are intended to be types (used in type definitions). Other objects that have type of Type should be created in other namespaces (like SimplifyType function, for example).
The parameters of a type function are do not necessarily have type of Type. For example, you might define a type like Point(3) where the 3 is intended to indicate the dimensionality of the space.