Personal tools

Polymorphism

From HaskellWiki

Revision as of 16:39, 19 October 2006 by BrettGiles (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

A value is called polymorphic if, depending on the context where it's used, it can take on more than one type.

Various kinds of polymorphism are identified.

1. Parametric polymorphism; mostly found in functional languages 1. Inclusion polymorphism; mostly found in object oriented languages 1. Ad hoc poolymorphism; typically C++ overloading

1 Haskell Examples

foldr :: forall a b. (a -> b -> b) -> b -> [a] -> b
foldr
is a typical example of a polymorphic function. When actually used, it may take on any of a variety of types, for example:
::(Char ->Int->Int)->Int->String->Int
::(String->String->String)->String->[String]->String

An "integer literal" is polymorphic:

1 :: forall t. (Num t) => t

2 References