Deprecate the ImpredicativeTypes feature
authorsimonpj@microsoft.com <unknown>
Fri, 30 Oct 2009 09:59:29 +0000 (09:59 +0000)
committersimonpj@microsoft.com <unknown>
Fri, 30 Oct 2009 09:59:29 +0000 (09:59 +0000)
commitaf28015f9139151ef33098481e774be92bfcbe8f
tree9ffe358c4fd37d3543c2098b800345c668bc3fe6
parent0600645a1f0a4ebb7861038ccf6d0ffcfbbadcad
Deprecate the ImpredicativeTypes feature

GHC has had an experimental implementation of impredicative
polymorphism for a year or two now (flag -XImpredicativeTypes).
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]!)

[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/
compiler/main/DynFlags.hs