wiki:PolymorphicComponents

Version 2 (modified by loeh@…, 9 years ago) (diff)

added crossref

Polymorphic Components

See ExtensionDescriptionHowto for information on how to write these extension descriptions. Please add any new extensions to the list of HaskellExtensions.

Brief Explanation

Types of data constructor arguments are allowed local universal quantification (forall) and contexts constraining universally quantified type variables, e.g.

newtype Swizzle = MkSwizzle (forall a. Ord a => [a] -> [a])

References

Pros

  • type inference seems to be a simple extension of Hindley-Milner.
  • large step in expressiveness: types become impredicative, albeit with an intervening data constructor, enabling Church encodings and similar System F tricks. The very useful Rank2Types can be viewed as syntactic sugar (and therefore a safe next step).
  • used by ReadP type.

Cons

  • more complex denotational semantics