[Haskell-cafe] Pointfree rank-2 typed function

Simon Peyton-Jones simonpj at microsoft.com
Wed Nov 25 03:12:24 EST 2009

| Are there workarounds for uses of impredicative types, or do we lose the
| ability to express certain programs as a result?

There's usually a workaround.  I include the msg I sent below.


-----Original Message-----
From: Simon Peyton-Jones 
Sent: 30 October 2009 09:52
To: GHC users
Cc: Dimitrios Vytiniotis
Subject: GHC 6.12.1 and impredicative polymorphism


One more update about GHC 6.12, concerning impredicative polymorphism.

GHC has had an experimental implementation of impredicative polymorphism for a year or two now (flag -XImpredicativePolymorphism). But

  a) The implementation is ridiculously complicated, and the complexity
     is pervasive (in the type checker) rather than localized.
     I'm very unhappy about this, especially as we add more stuff to
     the type checker for type families.

  b) The specification (type system) is well-defined [1], but is also pretty
     complicated, and it's just too hard to predict which programs will
     typecheck and which will not.

So it's time for a re-think.  I propose to deprecate it in 6.12, and remove it altogether in 6.14.  We may by then have something else to put in its place.  (There is no lack of candidates [2,3,4]!) 

Fortunately, I don't think a lot of people use the feature in anger.  Please yell if you *are* using impredicative polymorphism for something serious.  But if you are, we need to think of a workaround.  The current situation seems unsustainable.


[1] http://research.microsoft.com/en-us/um/people/simonpj/papers/boxy/
[2] http://research.microsoft.com/en-us/um/people/crusso/qml/
[3] http://research.microsoft.com/en-us/um/people/daan/pubs.html
[4] http://gallium.inria.fr/~remy/mlf/

More information about the Haskell-Cafe mailing list