Classes, records, interfaces, enumerations and delegates can be considered as basic types. Each assembly declares types from the mentioned kinds, and then exports some of them. However, there are more data type kinds in an executing process. These other types are constructed from the basic types using a limited operation set.
These are the constructed types allowed by Freya:
Array types allow representing and managing simple series of items sharing the same type. They enjoy a special and very efficient implementation by the Common Language Runtime. Freya supports both one-dimensional arrays, including jagged arrays, and multidimensional arrays.
Generic types defer their full definition by introducing type arguments. Before you can use a generic type definition, you must supply concrete types for each of these type parameters. Types constructed this way are called closed generic types.
Nullable types are special value types, created from the predefined System.Nullable[T] generic type. Freya provides special syntactic support for nullable types.
Actually, nullable types are special closed generic types but, since Freya has specific support for them, they are explained in a separate topic.
On the other hand, Freya also treats array types as special closed generic types, though the Common Language Runtime implementation for arrays has nothing to do with genericity.
The Freya Programming Language
Type declarations
Class declarations
Interface declarations
Inheritance
Nullable types