parametric polymorphism Polymorphism was first identified by Christopher Strachey in 1967 and developed by Hindley and Milner.
For example we could specify that the argument of the "head" function was a list without specifying a type for the elements of the list. In Haskell we would write: head :: [a] -> a
meaning head has type function from "list of a" to "a" where "a" is a type variable). This is known as parametric polymorphism. Polymorphic typing allows strong type checking as well as generic functions. ML in 1976 was the first language with polymorphic typing. See also generic type variable. Last updated: 2014-01-05