[Next] [Previous] [Up] [Top] [Contents] [Index]

4.1 Parameterized Declarations

4.1.3 Omitting the Explicit forall Clause: the Backquote Sugar

Type variables can be introduced implicitly -- without listing them in the forall clause. This provides a more concise notation for parameterized declarations by omitting the explicit forall prefix. A type variable is introduced implicitly in a declaration if:

So the declarations from the previous example can be rewritten more concisely as:

template object i_vector[T];
extend i_vector['T] isa collection[T];
method fetch(a@:i_vector['T], index:int):T  { ... }

The expressions remain the same since the backquote sugar does not affect whether or not a type parameter is explicit. Note that the names of type variables shadow names of globally visible types, whether the variables are introduced in a forall clause, using the backquote sugar, or as an explicit type parameter. For example, if a declaration introduces a type variable called int, all occurrences of int in that declaration will refer to that type variable and not the predefined integer type.