[ghc-steering-committee] #511 Deep Subsumption, recommendation: accept

Simon Marlow marlowsd at gmail.com
Tue Jun 21 09:47:39 UTC 2022

I'm never a fan of fork-like things, but as long as we're clear that
-XDeepSubsumption is not recommended and will not be on by default in a
future GHC20XX then I suppose it's OK.

If it's backported to 9.2, then code wanting to use it would need to have a
`ghc >= 9.2.4` constraint in the `.cabal` file, which is a bit unusual. We
don't normally add new language features in a patchlevel release. But this
isn't a strong argument for not doing it I guess - you would need that
constraint if you relied on some bug that was fixed in 9.2.4 too.


On Mon, 20 Jun 2022 at 14:56, Spiwack, Arnaud <arnaud.spiwack at tweag.io>

> Dear all,
> The Deep Subsumption proposal [
> https://github.com/ghc-proposals/ghc-proposals/pull/511 ] proposes a new
> extension, -XDeepSubsumption, which, when activated, partially reverts the
> changes from the Simplified Subsumption proposal.
> The Simplified Subsumption breaks more programs than anticipated. Many
> don't see any benefit from Simplified Subsumption, just the breakage, and
> don't like the eta-expansion that it forces.
> -XDeepSubsumption, when activated, restores deep skolemisation and
> co/contra-variance of the function arrow (but not deep instantiation, which
> doesn't affect the observed breakage). The patch already exists for it, and
> is about 400loc.
> There are two interesting highlights for me.
> - It is proposed that -XDeepSubsumption is activated by default in
> Haskell98 and Haskell2010, but not GHC2021. -XDeepSubsumption is orthogonal
> to Haskell2010, as far as I can tell, but it gives a cut-off point from
> which the recommended behaviour (-XNoDeepSubsumption) is the default.
> - Even with -XDeepSubsumption, the Quick Look algorithm assumes that the
> function arrow is invariant. The consequences of that are difficult to
> anticipate, but there is no known example of a bad behaviour due to that
> interaction yet.
> The authors also have one unresolved question that I'm bringing to the
> committee's attention: should `-XDeepSubsumption` be backported to GHC 9.2?
> ---
> Despite the fact that this extension is decidedly fork-like, and that it's
> a real possibility to see the community split around this (after all, the
> motivation for -XDeepSubsumption is a few libraries which were designed to
> leverage GHC's deep subsumption, and may very well stay that way in the
> foreseeable future). I recommend acceptance. Providing a path to backward
> compatibility seems to me like the right thing to do.
> I also recommend backporting to GHC 9.2. It should essentially be backward
> compatible, and providing an update path that doesn't go directly from 9.0
> to 9.4 feels better to me.
> _______________________________________________
> ghc-steering-committee mailing list
> ghc-steering-committee at haskell.org
> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-steering-committee/attachments/20220621/f73d08ae/attachment.html>

More information about the ghc-steering-committee mailing list