There is no notion of 'const' or 'volatile' supported by the type system.
All types support support recursion and polymorphism. In addition, an arbitrary family of abstract types can be created on the fly, by lifting any existing first class C or C++ type using a binding construction. Abstract types may also be polymorphic. [A lot more is needed here]