In the following cases, the scope of named type variables is
restricted to the type expression where they appear: 1) for universal
(explicitly polymorphic) type variables; 2) for type variables that
only appear in public method specifications (as those variables will
be made universal, as described in section
6.9.1);
3) for variables used as aliases, when the type they are aliased to
would be invalid in the scope of the enclosing definition (
i.e.
when it contains free universal type variables, or locally
defined types.)
In general the scope of an alias is
the same as for a named type variable, and covers the whole enclosing
definition.
If the type variable