[ghc-steering-committee] #287: Simplify subsumption , recommendation: accept
Joachim Breitner
mail at joachim-breitner.de
Fri Jan 17 16:17:43 UTC 2020
Hi,
I’m with Eric here.
Cheers,
Joachim
Am Freitag, den 17.01.2020, 09:16 -0500 schrieb Eric Seidel:
> I support acceptance as well. Changing the semantics of the program as part of type-checking is just bizarre and it seems like the impact in terms of required code changes is quite limited.
>
> Given how easy the fixes appear to be, and the fact that the fixed program will compile just fine with older GHCs, I'm inclined to support option (2): ripping the code out immediately. I've left a comment on the PR asking if we can do so while providing helpful fixit hints to unaware users.
>
> On Fri, Jan 17, 2020, at 08:49, Spiwack, Arnaud wrote:
> > Dear all,
> >
> > As the shepherd for proposal #287 [
> > https://github.com/ghc-proposals/ghc-proposals/pull/287 ], I recommend
> > acceptance
> >
> > Summary
> >
> > The proposal is to remove a bunch of typing rules meant to make
> > RankNTypes a bit more powerful (covariance and contravariance of the
> > arrow constructor, as well as deep instantiation and deep
> > skolemisation). The problem with these rules is that 1/ they complicate
> > the type checker 2/ They are implemented by performing eta-expansion
> > during elaboration, which changes the semantics of program 3/ Dropping
> > (some of) them is beneficial for the quick-look story (proposal
> > currently on hold).
> >
> > The authors have tried this change on all of Stackage, and could come
> > up with simple fixes (~300 lines of which) for all but 2 packages
> > (namely, singleton, because of template haskell stuff, and labels for
> > reason not well identified).
> >
> > Rationale
> >
> > The common point of all these features is that they jiggle the position
> > of foralls around. Which sounds reasonable at first glance. But really,
> > they tend to interact badly with other stuff (I don't remember the
> > circumstances, but there was a discussion of deep instantiation and
> > deep skolemisation in the context of linear types as well). Basically,
> > they are rather fragile features, I'd rather we did without them.
> >
> > I think that 300 lines of simple fixes for all of Stackage is a very
> > small number. So it is legitimate to consider this change to have low
> > impact. Regarding the singleton, I'm sure Richard will be happy to fix
> > it ;-) . Only labels remains. It shouldn't be a blocker.
> >
> > Remaining question
> >
> > There is one open question on the pull request thread. Namely, how to
> > schedule the removal. Two paths are being discussed
> > 1. Add a `-XLessSubsumption` flag, turn it off by default, then turn
> > it on by default in version n+1, then remove the subsumption rules
> > altogether in version n+3
> > 2. Simply remove the code, preferably early in the release cycle,
> > communicate profusely.
> > The thread participants seem to lean towards (2). The reason being that
> > this is a change where it is easy to write code compatible with
> > previous versions of the compiler (everything which compiles after this
> > change also compiles before this change). Also, there is a preference
> > for removing the relevant code sooner rather than later. But I'd like
> > the opinion of the committee.
> >
> > Best,
> > Arnaud
> > _______________________________________________
> > ghc-steering-committee mailing list
> > ghc-steering-committee at haskell.org
> > https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
> >
> _______________________________________________
> ghc-steering-committee mailing list
> ghc-steering-committee at haskell.org
> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
--
Joachim Breitner
mail at joachim-breitner.de
http://www.joachim-breitner.de/
More information about the ghc-steering-committee
mailing list