Carbon supports abstract types, such as lists or maps. In Carbon an abstract type is of one of the following classes:
- Abstract Base Type. An abstract base type does not need further treatment to guarantee their properties (unsorted, and not duplicate-free)
- Derived Abstract Type. An abstract base type can be marked as a particular abstract type with further properties (such as uniqueness of contained elements), enabling the application to check certain promises and guarantees
If an applications requires more guarantees and properties to abstract types, such as uniquness of elements or duplicate-freeness, abstract base types can be annotated, effectively converting them to derviced abstract types.