Aus http://en.wikipedia.org/wiki/Polymorphism_%28computer_science%29
[...] Using parametric polymorphism, a function or datatype can be
written generically so that it can deal equally well with objects of
various types. For example, a function append that joins two lists
can be constructed so that it does not depend on one particular type
of list: it can append lists of integers, lists of real numbers,
lists of strings, and so on. Let a denote the type of elements in the
lists. Then append can be typed [a] × [a] → [a], where [a]
denotes a list of elements of type a. We say that append is
parameterized by a. (Note that since there is only one type
parameter, the function cannot be applied to just any pair of lists:
they must consist of the same type of elements.)
Parametric polymorphism was the first type of polymorphism developed,
first identified by Christopher Strachey in 1967. It was also the
first type of polymorphism to appear in an actual programming
language, ML in 1976. [...]