Changes between Version 49 and Version 50 of Migration/8.0


Ignore:
Timestamp:
Jun 10, 2016 9:47:58 AM (3 years ago)
Author:
adamgundry
Comment:

More details about impredicativity-related changes

Legend:

Unmodified
Added
Removed
Modified
  • Migration/8.0

    v49 v50  
    1616`-XImpredicativeTypes` do so at their own risk!
    1717
     18In many cases, this can be fixed by rewriting `a = f . g` to `a x = f (g x)`.
     19
    1820=== Requirement for impredicative types
    1921
    20 In previous versions of GHC, it was possible to hide an impredicative type behind a type synonym, because GHC did not always expand type synonyms when checking for impredicativity. GHC 8 is stricter in this regard, so code that compiled with `-XRankNTypes` may now require `-XImpredicativeTypes` (bearing in mind its potential brokenness) or may need to be rewritten to avoid impredicativity. See #10194, [https://mail.haskell.org/pipermail/ghc-devs/2016-February/011367.html this thread] and [https://mail.haskell.org/pipermail/ghc-devs/2016-May/012144.html this thread].
     22In previous versions of GHC, it was possible to hide an impredicative type behind a type synonym, because GHC did not always expand type synonyms when checking for impredicativity. GHC 8 is stricter in this regard, so code that compiled with `-XRankNTypes` may now require `-XImpredicativeTypes` (bearing in mind its potential brokenness) or may need to be rewritten to avoid impredicativity. See #10194, [https://mail.haskell.org/pipermail/ghc-devs/2016-February/011367.html this thread], [https://mail.haskell.org/pipermail/ghc-devs/2016-May/012144.html this thread] and [https://mail.haskell.org/pipermail/haskell-cafe/2016-June/124119.html this thread].
    2123
    2224=== More conservative use of superclass constraints while solving