<p>
A type determines a set of values together with operations and methods specific
to those values. A type may be denoted by a <i>type name</i>, if it has one, which must be
-followed by <a href="#Instantiations">type arguments</a> if the type is parameterized.
+followed by <a href="#Instantiations">type arguments</a> if the type is generic.
A type may also be specified using a <i>type literal</i>, which composes a type
from existing types.
</p>
<a href="#Function_declarations">function declaration</a> or
<a href="#Type_definitions">type definition</a>; or in the receiver specification
of a <a href="#Method_declarations">method declaration</a> that is associated
-with a parameterized type.
+with a generic type.
A type parameter acts as a place holder for an (as of yet) unknown type in the declaration;
the type parameter is replaced with a <i>type argument</i> upon
-<a href="#Instantiations">instantiation</a> of the parameterized function or type.
+<a href="#Instantiations">instantiation</a> of the generic function or type.
</p>
<p>
<li>The scope of an identifier denoting a method receiver, function parameter,
or result variable is the function body.</li>
- <li>The scope of an identifier denoting a type parameter of a type-parameterized function
+ <li>The scope of an identifier denoting a type parameter of a generic function
or declared by a method receiver is the function body and all parameter lists of the
function.
</li>
- <li>The scope of an identifier denoting a type parameter of a parameterized type
- begins after the name of the parameterized type and ends at the end
+ <li>The scope of an identifier denoting a type parameter of a generic type
+ begins after the name of the generic type and ends at the end
of the TypeSpec.</li>
<li>The scope of a constant or variable identifier declared
<p>
If the type definition specifies <a href="#Type_parameter_lists">type parameters</a>,
-the type name denotes a <i>parameterized type</i>.
-Parameterized types must be <a href="#Instantiations">instantiated</a> when they
+the type name denotes a <i>generic type</i>.
+Generic types must be <a href="#Instantiations">instantiated</a> when they
are used.
</p>
</pre>
<p>
-A parameterized type may also have methods associated with it. In this case,
+A generic type may also have methods associated with it. In this case,
the method receivers must declare the same number of type parameters as
-present in the parameterized type definition.
+present in the generic type definition.
</p>
<pre>
<p>
A type parameter list declares the <a href="#Type_parameters">type parameters</a>
-in a type-parameterized function or type declaration.
+in a generic function or type declaration.
The type parameter list looks like an ordinary <a href="#Function_types">function parameter list</a>
except that the type parameter names must all be present and the list is enclosed
in square brackets rather than parentheses.
</p>
<p>
-A parsing ambiguity arises when the type parameter list for a parameterized type
+A parsing ambiguity arises when the type parameter list for a generic type
declares a single type parameter with a type constraint of the form <code>*C</code>
or <code>(C)</code> where <code>C</code> is not a (possibly parenthesized)
<a href="#Types">type literal</a>:
<p>
If the function declaration specifies <a href="#Type_parameter_lists">type parameters</a>,
-the function name denotes a <i>type-parameterized function</i>.
-Type-parameterized functions must be <a href="#Instantiations">instantiated</a> when they
+the function name denotes a <i>generic function</i>.
+Generic functions must be <a href="#Instantiations">instantiated</a> when they
are used.
</p>
</p>
<p>
-If the receiver base type is a <a href="#Type_declarations">parameterized type</a>, the
+If the receiver base type is a <a href="#Type_declarations">generic type</a>, the
receiver specification must declare corresponding type parameters for the method
to use. This makes the receiver type parameters available to the method.
</p>
</pre>
<p>
-An operand name denoting a <a href="#Function_declarations">type-parameterized function</a>
+An operand name denoting a <a href="#Function_declarations">generic function</a>
may be followed by a list of <a href="#Instantiations">type arguments</a>; the
resulting operand is an <a href="#Instantiations">instantiated</a> function.
</p>
</pre>
<p>
-If <code>f</code> denotes a parameterized function, it must be
+If <code>f</code> denotes a generic function, it must be
<a href="#Instantiations">instantiated</a> before it can be called
or used as a function value.
</p>
<h3 id="Instantiations">Instantiations</h3>
<p>
-A parameterized function or type is <i>instantiated</i> by substituting <i>type arguments</i>
+A generic function or type is <i>instantiated</i> by substituting <i>type arguments</i>
for the type parameters.
Instantiation proceeds in two phases:
</p>
<ol>
<li>
-Each type argument is substituted for its corresponding type parameter in the parameterized
+Each type argument is substituted for its corresponding type parameter in the generic
declaration.
This substitution happens across the entire function or type declaration,
including the type parameter list itself and any types in that list.
</ol>
<p>
-Instantiating a type results in a new non-parameterized <a href="#Types">named type</a>;
-instantiating a function produces a new non-parameterized function.
+Instantiating a type results in a new non-generic <a href="#Types">named type</a>;
+instantiating a function produces a new non-generic function.
</p>
<pre>
</p>
<p>
-Parameterized types, and parameterized functions that are not <a href="#Calls">called</a>,
+Generic types, and generic functions that are not <a href="#Calls">called</a>,
require a type argument list for instantiation; if the list is partial, all
remaining type arguments must be inferrable.
-Calls to parameterized functions may provide a (possibly partial) type
+Calls to generic functions may provide a (possibly partial) type
argument list, or may omit it entirely if the omitted type arguments are
inferrable from the ordinary (non-type) function arguments.
</p>
</p>
<p>
-For instance, given the type-parameterized function
+For instance, given the generic function
</p>
<pre>
</pre>
<p>
-A <a href="#Type_parameters">type parameter</a> or a <a href="#Type_declarations">parameterized type</a>
+A <a href="#Type_parameters">type parameter</a> or a <a href="#Type_declarations">generic type</a>
may be used as a type in a case. If upon <a href="#Instantiations">instantiation</a> that type turns
out to duplicate another entry in the switch, the first matching case is chosen.
</p>