type defining_identifier[discriminant_part] is formal_type_definition;
formal_private_type_definition
| formal_derived_type_definition
| formal_discrete_type_definition
| formal_signed_integer_type_definition
| formal_modular_type_definition
| formal_floating_point_definition
| formal_ordinary_fixed_point_definition
| formal_decimal_fixed_point_definition
| formal_array_type_definition
| formal_access_type_definition
type Buffer(Length : Natural) is limited private;
type Int is range <>;
type Angle is delta <>;
type Mass is digits <>;
type Rank is range <>;
First : Rank := Rank'First;
Second : Rank := First + 1; --the operator "+" of the type Rank
limited private the class of all types
private the class of all nonlimited types
tagged limited private the class of all tagged types
tagged private the class of all nonlimited tagged types
type Item is private;
type Index is (<>);
type Vector is array (Index range <>) of Item;
type Table is array (Index) of Item;
package P is
...
end P;
type Option is array (Color) of Boolean;
Vector => Mix, Table => Option);
type Node is private;
type Link is access Node;
package P is
...
end P;
type Car_Name is access Car;
record
Pred, Succ : Car_Name;
Number : License_Number;
Owner : Person;
end record;