Personal tools

Parametric polymorphism

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(...have I got this right?)

Revision as of 21:56, 16 March 2007

Parametric polymorphism is when a function's type signature allows various arguments to take on arbitrary types, but the types most be related to each other in some way.

For example, in Java one can write a function that accepts two arguments of any possible type. However, Haskell goes further by allowing a function to accept two arguments of any type so long as they are both the same type. For example

As a specific (and slightly more complicated) example, the well-known
map
function has a parametrically polymorphic type
map :: (a -> b) -> [a] -> [b]
which means that the function well accept any type of list and any type of function, provided the types match up. This makes
map
highly polymorphic, yet there is still no risk of a runtime type mismatch.