<div dir="ltr"><div class="markdown-here-wrapper" style=""><p style="margin:0px 0px 1.2em!important">Dear all,</p>
<p style="margin:0px 0px 1.2em!important">Last time around that we had a discussion about this proposal, the authors asked to have some more time to revise a few things. Since then, the proposal has been simplified, and the paper accepted (congratulations!).</p>
<p style="margin:0px 0px 1.2em!important">Last time around, those of us who opined were mostly in agreement with accepting the proposal, though there were some distracting complications. Which have since been forked (and accepted) as <a href="https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0287-simplify-subsumption.rst">proposal #287</a>. I do believe that this iteration of the proposal is a no-brainer. It simply gives a clear semantics to the unspecified <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">-XImpredicativeTypes</code>. It’s useful, and an implementation already exists (<a href="https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3220">!3220</a>).</p>
<p style="margin:0px 0px 1.2em!important">The summary of the proposed specification is: to instantiate a type variable to something of the form <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">forall a. …</code>, go through arguments and look for an absolutely necessary such instantiation (which will happen when there is a data constructor: <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">[a] ~ [forall b.t]</code> iif <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">a = forall b.t</code>).</p>
<p style="margin:0px 0px 1.2em!important">The only point which we may want to discuss is <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">($)</code>, which currently has an ad hoc typing rule baked in the type checker. The proposal suggests removing this baked in rule, and replacing it with making <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">($)</code> always use the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">-XImpredicativeTypes</code> typing rule. An alternative, of course, is to simply not treat <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">($)</code> any specially, and require <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">-XImpredicativeTypes</code> to be explicitly turned on when one wants <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">runST $ do …</code>. But, as the proposal points out, this would break a lot of existing programs. So I agree with the proposal’s choice.</p>
<p style="margin:0px 0px 1.2em!important">In summary, I recommend accepting this proposal in its current state.</p>
<div title="MDH:PGRpdj5EZWFyIGFsbCw8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pkxhc3QgdGltZSBhcm91bmQg
dGhhdCB3ZSBoYWQgYSBkaXNjdXNzaW9uIGFib3V0IHRoaXMgcHJvcG9zYWwsIHRoZSBhdXRob3Jz
IGFza2VkIHRvIGhhdmUgc29tZSBtb3JlIHRpbWUgdG8gcmV2aXNlIGEgZmV3IHRoaW5ncy4gU2lu
Y2UgdGhlbiwgdGhlIHByb3Bvc2FsIGhhcyBiZWVuIHNpbXBsaWZpZWQsIGFuZCB0aGUgcGFwZXIg
YWNjZXB0ZWQgKGNvbmdyYXR1bGF0aW9ucyEpLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+TGFz
dCB0aW1lIGFyb3VuZCwgdGhvc2Ugb2YgdXMgd2hvIG9waW5lZCB3ZXJlIG1vc3RseSBpbiBhZ3Jl
ZW1lbnQgd2l0aCBhY2NlcHRpbmcgdGhlIHByb3Bvc2FsLCB0aG91Z2ggdGhlcmUgd2VyZSBzb21l
IGRpc3RyYWN0aW5nIGNvbXBsaWNhdGlvbnMuIFdoaWNoIGhhdmUgc2luY2UgYmVlbiBmb3JrZWQg
KGFuZCBhY2NlcHRlZCkgYXMgW3Byb3Bvc2FsICMyODddLiBJIGRvIGJlbGlldmUgdGhhdCB0aGlz
IGl0ZXJhdGlvbiBvZiB0aGUgcHJvcG9zYWwgaXMgYSBuby1icmFpbmVyLiBJdCBzaW1wbHkgZ2l2
ZXMgYSBjbGVhciBzZW1hbnRpY3MgdG8gdGhlIHVuc3BlY2lmaWVkIGAtWEltcHJlZGljYXRpdmVU
eXBlc2AuIEl0J3MgdXNlZnVsLCBhbmQgYW4gaW1wbGVtZW50YXRpb24gYWxyZWFkeSBleGlzdHMg
KFshMzIyMF0pLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+VGhlIHN1bW1hcnkgb2YgdGhlIHBy
b3Bvc2VkIHNwZWNpZmljYXRpb24gaXM6IHRvIGluc3RhbnRpYXRlIGEgdHlwZSB2YXJpYWJsZSB0
byBzb21ldGhpbmcgb2YgdGhlIGZvcm0gYGZvcmFsbCBhLiDigKZgLCBnbyB0aHJvdWdoIGFyZ3Vt
ZW50cyBhbmQgbG9vayBmb3IgYW4gYWJzb2x1dGVseSBuZWNlc3Nhcnkgc3VjaCBpbnN0YW50aWF0
aW9uICh3aGljaCB3aWxsIGhhcHBlbiB3aGVuIHRoZXJlIGlzIGEgZGF0YSBjb25zdHJ1Y3Rvcjog
YFthXSB+IFtmb3JhbGwgYi50XWAgaWlmIGBhID0gZm9yYWxsIGIudGApLjwvZGl2PjxkaXY+PGJy
PjwvZGl2PjxkaXY+VGhlIG9ubHkgcG9pbnQgd2hpY2ggd2UgbWF5IHdhbnQgdG8gZGlzY3VzcyBp
cyBgKCQpYCwgd2hpY2ggY3VycmVudGx5IGhhcyBhbiBhZCBob2MgdHlwaW5nIHJ1bGUgYmFrZWQg
aW4gdGhlIHR5cGUgY2hlY2tlci4gVGhlIHByb3Bvc2FsIHN1Z2dlc3RzIHJlbW92aW5nIHRoaXMg
YmFrZWQgaW4gcnVsZSwgYW5kIHJlcGxhY2luZyBpdCB3aXRoIG1ha2luZyBgKCQpYCBhbHdheXMg
dXNlIHRoZSBgLVhJbXByZWRpY2F0aXZlVHlwZXNgIHR5cGluZyBydWxlLiBBbiBhbHRlcm5hdGl2
ZSwgb2YgY291cnNlLCBpcyB0byBzaW1wbHkgbm90IHRyZWF0IGAoJClgIGFueSBzcGVjaWFsbHks
IGFuZCByZXF1aXJlIGAtWEltcHJlZGljYXRpdmVUeXBlc2AgdG8gYmUgZXhwbGljaXRseSB0dXJu
ZWQgb24gd2hlbiBvbmUgd2FudHMgYHJ1blNUICQgZG8g4oCmYC4gQnV0LCBhcyB0aGUgcHJvcG9z
YWwgcG9pbnRzIG91dCwgdGhpcyB3b3VsZCBicmVhayBhIGxvdCBvZiBleGlzdGluZyBwcm9ncmFt
cy4gU28gSSBhZ3JlZSB3aXRoIHRoZSBwcm9wb3NhbCdzIGNob2ljZS48YnI+PC9kaXY+PGRpdj48
YnI+PC9kaXY+PGRpdj5JbiBzdW1tYXJ5LCBJIHJlY29tbWVuZCBhY2NlcHRpbmcgdGhpcyBwcm9w
b3NhbCBpbiBpdHMgY3VycmVudCBzdGF0ZS48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5b
cHJvcG9zYWwgIzI4N106IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9naGMtcHJvcG9zYWxz
L2doYy1wcm9wb3NhbHMvYmxvYi9tYXN0ZXIvcHJvcG9zYWxzLzAyODctc2ltcGxpZnktc3Vic3Vt
cHRpb24ucnN0IiB0YXJnZXQ9Il9ibGFuayIgZGF0YS1zYWZlcmVkaXJlY3R1cmw9Imh0dHBzOi8v
d3d3Lmdvb2dsZS5jb20vdXJsP3E9aHR0cHM6Ly9naXRodWIuY29tL2doYy1wcm9wb3NhbHMvZ2hj
LXByb3Bvc2Fscy9ibG9iL21hc3Rlci9wcm9wb3NhbHMvMDI4Ny1zaW1wbGlmeS1zdWJzdW1wdGlv
bi5yc3QmYW1wO3NvdXJjZT1nbWFpbCZhbXA7dXN0PTE1OTEyNjEzNDEwNzQwMDAmYW1wO3VzZz1B
RlFqQ05FdjJWRUVEbXpnRjA2WXlrRXZCU210M3FuWXJRIj5odHRwczovL2dpdGh1Yi5jb20vZ2hj
LTx3YnI+cHJvcG9zYWxzL2doYy1wcm9wb3NhbHMvYmxvYi88d2JyPm1hc3Rlci9wcm9wb3NhbHMv
MDI4Ny08d2JyPnNpbXBsaWZ5LXN1YnN1bXB0aW9uLnJzdDwvYT48L2Rpdj48ZGl2PlshMzIyMF06
IDxhIGhyZWY9Imh0dHBzOi8vZ2l0bGFiLmhhc2tlbGwub3JnL2doYy9naGMvLS9tZXJnZV9yZXF1
ZXN0cy8zMjIwIiB0YXJnZXQ9Il9ibGFuayIgZGF0YS1zYWZlcmVkaXJlY3R1cmw9Imh0dHBzOi8v
d3d3Lmdvb2dsZS5jb20vdXJsP3E9aHR0cHM6Ly9naXRsYWIuaGFza2VsbC5vcmcvZ2hjL2doYy8t
L21lcmdlX3JlcXVlc3RzLzMyMjAmYW1wO3NvdXJjZT1nbWFpbCZhbXA7dXN0PTE1OTEyNjEzNDEw
NzQwMDAmYW1wO3VzZz1BRlFqQ05FRjQ4RWU4T3BPUWhCSDRtSHd6SFhFWkM2Y2RBIj5odHRwczov
L2dpdGxhYi5oYXNrZWxsLm9yZy88d2JyPmdoYy9naGMvLS9tZXJnZV9yZXF1ZXN0cy8zMjIwPC9h
PjwvZGl2Pg==" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0"></div></div></div>