<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">I'm in strong support. This will be a nice win for GHC.<div class=""><br class=""></div><div class="">Richard<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Jun 3, 2020, at 10:03 AM, Spiwack, Arnaud <<a href="mailto:arnaud.spiwack@tweag.io" class="">arnaud.spiwack@tweag.io</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="markdown-here-wrapper" style=""><p style="margin:0px 0px 1.2em!important" class="">Dear all,</p><p style="margin:0px 0px 1.2em!important" class="">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" class="">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" class="">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" class="">-XImpredicativeTypes</code>. It’s useful, and an implementation already exists (<a href="https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3220" class="">!3220</a>).</p><p style="margin:0px 0px 1.2em!important" class="">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" class="">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" class="">[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" class="">a = forall b.t</code>).</p><p style="margin:0px 0px 1.2em!important" class="">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" class="">($)</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" class="">($)</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" class="">-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" class="">($)</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" class="">-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" class="">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" class="">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" class=""></div></div></div>
_______________________________________________<br class="">ghc-steering-committee mailing list<br class=""><a href="mailto:ghc-steering-committee@haskell.org" class="">ghc-steering-committee@haskell.org</a><br class="">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee<br class=""></div></blockquote></div><br class=""></div></body></html>