Eli Schneider
Eli Schneider

Reputation: 4955

What is Haskell's style of polymorphism?

With Haskell's type classes it almost seems that it enables ad hoc polymorphism, but its functions declarations seem parametric polymorphism. Am I mixing my understanding of different things?

Upvotes: 26

Views: 1530

Answers (1)

Don Stewart
Don Stewart

Reputation: 137937

Indeed, Haskell supports both (higher rank) parametric polymorphism, and ad hoc (or bounded) polymorphism. Parametric polymorphism in Haskell is supported via its Hindley-Milner/System F type system. Ad hoc polymorphism is supported via type classes.

For the origin of type classes and ad hoc polymorphism, see Wadler's papers:

For the origin of the distinction between parametric and ad hoc polymorphism, you can dig up Strachey's papers,

Upvotes: 32

Related Questions