<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">ExistentialQuantification is one of the extensions that we are considering adding to GHC2021.</p>
<p style="margin:0px 0px 1.2em!important">ExistentialQuantificaton enables the following syntax:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code class="hljs language-haskell" 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;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;overflow-x:auto;padding:0.5em;color:rgb(51,51,51);background:rgb(248,248,248) none repeat scroll 0% 0%"><span class="hljs-typedef"><span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">data</span> <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">Dyn</span> = forall a. <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">Typeable</span> a => <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">MkDyn</span> a</span>
</code></pre>
<p style="margin:0px 0px 1.2em!important">Has any of us actually used this syntax in recent years? I, personally, only use the equivalent GADT syntax</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code class="hljs language-haskell" 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;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;overflow-x:auto;padding:0.5em;color:rgb(51,51,51);background:rgb(248,248,248) none repeat scroll 0% 0%"><span class="hljs-typedef"><span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">data</span> <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">Dyn</span> where</span>
  <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">MkDyn</span> :: <span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">forall</span> a. <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">Typeable</span> a => a -> <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">Dyn</span> a
</code></pre>
<p style="margin:0px 0px 1.2em!important">It’s barely more verbose, and it’s less quirky.</p>
<p style="margin:0px 0px 1.2em!important">Besides, the GADT syntax is there to stay (and GADTSyntax at the very least, is one of these extensions where there seems to be no doubt will be in GHC2021).</p>
<p style="margin:0px 0px 1.2em!important">I’d say there is such a thing as too much syntax. And, in my view, the GADT syntax makes the ExistentialQuantification syntax redundant. I’d much rather we didn’t add it in the defaults so that it can be on its slow path to deprecation.</p>
<p style="margin:0px 0px 1.2em!important">/Arnaud</p>
<div title="MDH:PGRpdj5EZWFyIGFsbCw8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkV4aXN0ZW50aWFsUXVhbnRp
ZmljYXRpb24gaXMgb25lIG9mIHRoZSBleHRlbnNpb25zIHRoYXQgd2UgYXJlIGNvbnNpZGVyaW5n
IGFkZGluZyB0byBHSEMyMDIxLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PHNwYW4gemV1bTRj
Mjg9IlBSXzExXzAiIGRhdGEtZGRud2FiPSJQUl8xMV8wIiBhcmlhLWludmFsaWQ9InNwZWxsaW5n
IiBjbGFzcz0iTEkgbmciPkV4aXN0ZW50aWFsUXVhbnRpZmljYXRvbjwvc3Bhbj4gZW5hYmxlcyB0
aGUgZm9sbG93aW5nIHN5bnRheDo8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYGhhc2tlbGw8
L2Rpdj48ZGl2PmRhdGEgRHluID0gZm9yYWxsIGEuIFR5cGVhYmxlIGEgPSZndDsgPHNwYW4gemV1
bTRjMjg9IlBSXzEyXzAiIGRhdGEtZGRud2FiPSJQUl8xMl8wIiBhcmlhLWludmFsaWQ9InNwZWxs
aW5nIiBjbGFzcz0iTEkgbmciPk1rRHluPC9zcGFuPiBhPC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2
Pjxicj48L2Rpdj48ZGl2PkhhcyBhbnkgb2YgdXMgYWN0dWFsbHkgdXNlZCB0aGlzIHN5bnRheCBp
biByZWNlbnQgeWVhcnM/IEksIHBlcnNvbmFsbHksIG9ubHkgdXNlIHRoZSBlcXVpdmFsZW50IEdB
RFQgc3ludGF4PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGBoYXNrZWxsPC9kaXY+PGRpdj5k
YXRhIER5biB3aGVyZTwvZGl2PjxkaXY+Jm5ic3A7IE1rRHluIDo6IGZvcmFsbCBhLiBUeXBlYWJs
ZSBhID0mZ3Q7IGEgLSZndDsgRHluIGE8L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2
PjxkaXY+SXQncyBiYXJlbHkgbW9yZSB2ZXJib3NlLCBhbmQgaXQncyBsZXNzIDxzcGFuIHpldW00
YzI4PSIxNjA3MDg3OTY2OTI4IiBkYXRhLWRkbndhYj0iMTYwNzA4Nzk2NjkyOCIgY2xhc3M9Im5n
IiBkYXRhLXdwa2d2PSJ0cnVlIj5xdWlya3k8L3NwYW4+LjwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxk
aXY+QmVzaWRlcywgdGhlIEdBRFQgc3ludGF4IGlzIHRoZXJlIHRvIHN0YXkgKGFuZCBHQURUU3lu
dGF4IGF0IHRoZSB2ZXJ5IGxlYXN0LCBpcyBvbmUgb2YgdGhlc2UgZXh0ZW5zaW9ucyB3aGVyZSB0
aGVyZSBzZWVtcyB0byBiZSBubyBkb3VidCB3aWxsIGJlIGluIEdIQzIwMjEpLjwvZGl2PjxkaXY+
PGJyPjwvZGl2PjxkaXY+SSdkIHNheSB0aGVyZSBpcyBzdWNoIGEgdGhpbmcgYXMgdG9vIG11Y2gg
c3ludGF4LiBBbmQsIGluIG15IHZpZXcsIHRoZSBHQURUIHN5bnRheCBtYWtlcyB0aGUgRXhpc3Rl
bnRpYWxRdWFudGlmaWNhdGlvbiBzeW50YXggcmVkdW5kYW50LiBJJ2QgbXVjaCByYXRoZXIgd2Ug
ZGlkbid0IGFkZCBpdCBpbiB0aGUgZGVmYXVsdHMgc28gdGhhdCBpdCBjYW4gYmUgb24gaXRzIHNs
b3cgcGF0aCB0byBkZXByZWNhdGlvbi48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pi9Bcm5hdWQ8
YnI+PC9kaXY+" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0"></div></div></div>