<div dir="ltr">Back to the main point, it seems to be fairly consensual, right now, that #281 doesn't seem to have found the sweet spot which would make it work quite right. Not yet. I basically agree with the points raised so far. As I said earlier in the thread, I'm sympathetic with the goals, but unconvinced by the details. Is there a committee member which disagrees with the emerging consensus?<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Nov 24, 2020 at 1:15 PM Simon Peyton Jones via ghc-steering-committee <<a href="mailto:ghc-steering-committee@haskell.org">ghc-steering-committee@haskell.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">* Having two name-spaces appears to be The Major Obstacle towards making<br>
satisfying incremental progress in the direction of dependent types.<br>
<br>
* So perhaps we should have an extension -XSingleNameSpace that has a single<br>
name space, with all the consequences that would entail (like changing the<br>
syntax of tuple and list types).<br>
<br>
* Then further extensions toward dependent types could require -XSingleNameSpace.<br>
If you don't want that, you don't get the new goodies. There would be no<br>
expectation that a dependent-types extension should fit well with the <br>
double-name-space situation; maybe the combination is actually disallowed.<br>
<br>
* Or maybe the combination is allowed, but a bit clunky. For example, suppose<br>
a library defines f :: forall a -> blah<br>
Then, in a module with classic-Haskell name spaces, you'd have to say<br>
f (type Int)<br>
and not (f Int), forcibly setting the namespace.<br>
<br>
It'd be good to have this conversation on GitHub, and perhaps #378 is the place to do that?<br>
<br>
Simon<br>
<br>
| -----Original Message-----<br>
| From: ghc-steering-committee <<a href="mailto:ghc-steering-committee-bounces@haskell.org" target="_blank">ghc-steering-committee-bounces@haskell.org</a>> On<br>
| Behalf Of Joachim Breitner<br>
| Sent: 23 November 2020 08:10<br>
| To: <a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a><br>
| Subject: Re: [ghc-steering-committee] Please review "Visible 'forall' in<br>
| types of terms" #281<br>
| <br>
| Hi,<br>
| <br>
| Richard roughly says what is my sentiment too… I’d phrase it like this:<br>
| <br>
| It seems that #281 would be rather straight forward, if it were not for the<br>
| fact that this is the first (of many?) extensions that allow types and terms<br>
| to occur in the same syntactic spot. So far, when mentally parsing a<br>
| program, I know where to look for types, and where to look for terms. #281<br>
| breaks that, and has to come up with lots of subtle rules, that make me<br>
| uneasy.<br>
| <br>
| But that's not really #281’s fault – assuming we want to head towards<br>
| Dependent Haskell with a unified namespace, it’s a problem that needs to be<br>
| solved! But better have that discussion with a focus on that problem, and<br>
| have a plan that works in general. Maybe #270 is the right place to have<br>
| that discussion.<br>
| <br>
| My impression is that all (most?) of<br>
| those working towards a Dependent Haskell world assume that we get a unified<br>
| namespace with no punning, and all complexity (`type` sigils, `type`-<br>
| qualified imports) is around compatibility with modules that use punning,<br>
| with the hope that this is rare. Few are proposing to stick to a world of<br>
| two namespaces and punning and make _that_ ergonomic. Is that impression<br>
| correct?<br>
| <br>
| Do local modules (#283) alleviate the punning problem a bit? Given `data T =<br>
| T`, could we make it so that T is the type and T.T the constructor?<br>
| <br>
| But this really isn't the right place to throw out shower ideas. I wonder if<br>
| it would help if someone could maintain a wiki page with an overview of all<br>
| the numerous proposals and ideas thrown around to tackle the problem about<br>
| how we get from a world of two name spaces and punning to one with one<br>
| namespaces and no punning.<br>
| <br>
| <br>
| As for #281, unless I misjudge the urgency of that change, I’d be in favor<br>
| to park it until we have a good, generally applicable plan for mixing terms<br>
| and types.<br>
| <br>
| Cheers,<br>
| Joachim<br>
| <br>
| <br>
| <br>
| <br>
| Am Montag, den 23.11.2020, 03:35 +0000 schrieb Richard Eisenberg:<br>
| > My silence on this proposal is because I want to accept, but I agree with<br>
| Iavor that it's become too baroque. My #378 is, in part, an attempt to<br>
| clarify our stance on these sorts of features so that we can take a stab at<br>
| simplifying #281 by making it less expressive.<br>
| ><br>
| > So, I guess my vote is to delay decision on this proposal until we have<br>
| one for #378 (or #270, which can also help shed light on this one).<br>
| ><br>
| > Responding directly to Alejandro's concerns here: I actually don't really<br>
| understand. I think (1) is decided by<br>
| <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com" rel="noreferrer" target="_blank">https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com</a><br>
| %2Fghc-proposals%2Fghc-proposals%2Fblob%2Fmaster%2Fproposals%2F0081-forall-<br>
| arrow.rst&data=04%7C01%7Csimonpj%<a href="http://40microsoft.com" rel="noreferrer" target="_blank">40microsoft.com</a>%7Ccba94a6d611e470021260<br>
| 8d88f87414e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C1%7C637417159812849940%<br>
| 7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwi<br>
| LCJXVCI6Mn0%3D%7C3000&sdata=vU3lOmJ6kFNfEuy9MOo6ZoapadyzGIXPZblhR9QYvD0%<br>
| 3D&reserved=0; we use this syntax in standalone kind signatures in GHC<br>
| 8.10. We *could* change this if there were a compelling reason, but this<br>
| proposal is just continuing an existing feature. By (2), I think you're<br>
| referring to all the complications in the proposals at how to deal with<br>
| names and syntax in arguments -- I wouldn't myself describe this as<br>
| conflating the two namespaces, but rather as defining a subtle set of rules<br>
| for interpreting ambiguous names. It's the subtlety of these rules that<br>
| makes me uncomfortable. For (3), I don't really think there's much there --<br>
| and what there is seems to require (2) (and vice versa). Do you have an<br>
| example of a type-inference interaction you're worried about here?<br>
| ><br>
| > Richard<br>
| ><br>
| > > On Nov 22, 2020, at 12:09 PM, Alejandro Serrano Mena <<a href="mailto:trupill@gmail.com" target="_blank">trupill@gmail.com</a>><br>
| wrote:<br>
| > ><br>
| > > Hi all,<br>
| > > For me, there are two main concerns here:<br>
| > > This could be split on different proposals: (1) using the “forall a<br>
| > > ->” syntax, (2) conflating the type and term syntax and namespaces, (3)<br>
| introducing checking and inference for it; I find the claim that you can<br>
| just take the Quick Look Impredicativity paper, make a couple of<br>
| adjustments, and get correct checking and inference. This kind of big change<br>
| is the one for which I would actually expect a peer-reviewed paper.<br>
| > ><br>
| > > Regards,<br>
| > > Alejandro<br>
| > ><br>
| > > El El sáb, 21 nov 2020 a las 10:10, Joachim Breitner <mail@joachim-<br>
| <a href="http://breitner.de" rel="noreferrer" target="_blank">breitner.de</a>> escribió:<br>
| > > > Dear Committee,<br>
| > > ><br>
| > > > Iavor suggested to reject this proposal, but we have not heard a<br>
| > > > lot here yet. Especially before rejecting proposals, we probably<br>
| > > > owe a careful analysis, possibly with suggestions of ways forward<br>
| > > > (splitting the proposal into smaller pieces maybe? Iavor says<br>
| > > > there are many changes there).<br>
| > > ><br>
| > > > If we have continued silence, we’d reject.<br>
| > > ><br>
| > > > Cheers,<br>
| > > > Joachim<br>
| > > ><br>
| > > ><br>
| > > > Am Mittwoch, den 11.11.2020, 13:41 -0800 schrieb Iavor Diatchki:<br>
| > > > > Hello,<br>
| > > > ><br>
| > > > > Proposal #281 has been submitted for review by the committee again,<br>
| please read through it and let's have a discussion. Here are links to the<br>
| proposal's discussion section, and the proposal text:<br>
| > > > ><br>
| > > > > <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%" rel="noreferrer" target="_blank">https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%</a><br>
| > > > > 2Fgithub.com%2Fghc-proposals%2Fghc-proposals%2Fpull%2F281&da<br>
| > > > > ta=04%7C01%7Csimonpj%<a href="http://40microsoft.com" rel="noreferrer" target="_blank">40microsoft.com</a>%7Ccba94a6d611e4700212608d88<br>
| > > > > f87414e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C1%7C63741715981<br>
| > > > > 2849940%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2lu<br>
| > > > > MzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=oWBR%2BJue6s<br>
| > > > > 2bh7WU7lRhfHTcaDrQoUHzveh7e4XqWJE%3D&reserved=0<br>
| > > > > <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%" rel="noreferrer" target="_blank">https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%</a><br>
| > > > > 2Fgithub.com%2Fint-index%2Fghc-proposals%2Fblob%2Fvisible-forall<br>
| > > > > %2Fproposals%2F0000-visible-forall.rst&data=04%7C01%7Csimonp<br>
| > > > > j%<a href="http://40microsoft.com" rel="noreferrer" target="_blank">40microsoft.com</a>%7Ccba94a6d611e4700212608d88f87414e%7C72f988bf8<br>
| > > > > 6f141af91ab2d7cd011db47%7C1%7C1%7C637417159812849940%7CUnknown%7<br>
| > > > > CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWw<br>
| > > > > iLCJXVCI6Mn0%3D%7C3000&sdata=cfbyhbDYnPX%2BC7BKrak3mzPEFyiXY<br>
| > > > > wPhza3T1sv2X2I%3D&reserved=0<br>
| > > > ><br>
| > > > > While I suggested acceptance on the previous version, I am leaning<br>
| towards rejecting the proposal now. My reasoning is that I hadn't fully<br>
| understood all the aspects of the original proposal, and the new proposal<br>
| seems to lack a simple modular specification. There are *many* changes<br>
| described in the document, but I found it hard to understand what is the<br>
| current design, from the point of view of a user of the feature, as opposed<br>
| to someone trying to implement it.<br>
| > > > ><br>
| > > > > I'd be curious about what others think.<br>
| > > > ><br>
| > > > > -Iavor<br>
| > > > ><br>
| > > > ><br>
| > > > > _______________________________________________<br>
| > > > > ghc-steering-committee mailing list<br>
| > > > > <a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a><br>
| > > > > <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%" rel="noreferrer" target="_blank">https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%</a><br>
| > > > > <a href="http://2Fmail.haskell.org" rel="noreferrer" target="_blank">2Fmail.haskell.org</a>%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-steering<br>
| > > > > -committee&data=04%7C01%7Csimonpj%<a href="http://40microsoft.com" rel="noreferrer" target="_blank">40microsoft.com</a>%7Ccba94a6d<br>
| > > > > 611e4700212608d88f87414e%7C72f988bf86f141af91ab2d7cd011db47%7C1%<br>
| > > > > 7C1%7C637417159812849940%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjA<br>
| > > > > wMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&s<br>
| > > > > data=JJjZfHZhOTQ6yo31ucKEFHC9hNIXG9McT18FbuYbgvI%3D&reserved<br>
| > > > > =0<br>
| > > > --<br>
| > > > Joachim Breitner<br>
| > > > <a href="mailto:mail@joachim-breitner.de" target="_blank">mail@joachim-breitner.de</a><br>
| > > ><br>
| > > > <a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fw" rel="noreferrer" target="_blank">https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fw</a><br>
| > > > <a href="http://ww.joachim-breitner.de" rel="noreferrer" target="_blank">ww.joachim-breitner.de</a>%2F&data=04%7C01%7Csimonpj%40microsoft.c<br>
| > > > om%7Ccba94a6d611e4700212608d88f87414e%7C72f988bf86f141af91ab2d7cd0<br>
| > > > 11db47%7C1%7C1%7C637417159812849940%7CUnknown%7CTWFpbGZsb3d8eyJWIj<br>
| > > > oiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C300<br>
| > > > 0&sdata=BArEbQSBvN4zsTDWtN9PW3klvk1c05lX8hhm2jMKk5E%3D&res<br>
| > > > erved=0<br>
| > > ><br>
| > > ><br>
| > > > _______________________________________________<br>
| > > > ghc-steering-committee mailing list<br>
| > > > <a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a><br>
| > > > <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2F" rel="noreferrer" target="_blank">https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2F</a><br>
| > > > <a href="http://mail.haskell.org" rel="noreferrer" target="_blank">mail.haskell.org</a>%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-steering-com<br>
| > > > mittee&data=04%7C01%7Csimonpj%<a href="http://40microsoft.com" rel="noreferrer" target="_blank">40microsoft.com</a>%7Ccba94a6d611e47<br>
| > > > 00212608d88f87414e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C1%7C63<br>
| > > > 7417159812849940%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQI<br>
| > > > joiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=JJjZfHZ<br>
| > > > hOTQ6yo31ucKEFHC9hNIXG9McT18FbuYbgvI%3D&reserved=0<br>
| > ><br>
| > > _______________________________________________<br>
| > > ghc-steering-committee mailing list<br>
| > > <a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a><br>
| > > <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fma" rel="noreferrer" target="_blank">https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fma</a><br>
| > > <a href="http://il.haskell.org" rel="noreferrer" target="_blank">il.haskell.org</a>%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-steering-committ<br>
| > > ee&data=04%7C01%7Csimonpj%<a href="http://40microsoft.com" rel="noreferrer" target="_blank">40microsoft.com</a>%7Ccba94a6d611e47002126<br>
| > > 08d88f87414e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C1%7C6374171598<br>
| > > 12849940%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzI<br>
| > > iLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=JJjZfHZhOTQ6yo31ucK<br>
| > > EFHC9hNIXG9McT18FbuYbgvI%3D&reserved=0<br>
| ><br>
| > _______________________________________________<br>
| > ghc-steering-committee mailing list<br>
| > <a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a><br>
| > <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmail" rel="noreferrer" target="_blank">https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmail</a><br>
| > .<a href="http://haskell.org" rel="noreferrer" target="_blank">haskell.org</a>%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-steering-committee&a<br>
| > mp;data=04%7C01%7Csimonpj%<a href="http://40microsoft.com" rel="noreferrer" target="_blank">40microsoft.com</a>%7Ccba94a6d611e4700212608d88f<br>
| > 87414e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C1%7C637417159812859933<br>
| > %7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6I<br>
| > k1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=er3qe80%2BcqnIn3UIKfjuGu4VDwkH7<br>
| > jEosJqR45eKvn4%3D&reserved=0<br>
| --<br>
| Joachim Breitner<br>
| <a href="mailto:mail@joachim-breitner.de" target="_blank">mail@joachim-breitner.de</a><br>
| <br>
| <a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.joachim" rel="noreferrer" target="_blank">https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.joachim</a><br>
| -<br>
| <a href="http://breitner.de" rel="noreferrer" target="_blank">breitner.de</a>%2F&data=04%7C01%7Csimonpj%<a href="http://40microsoft.com" rel="noreferrer" target="_blank">40microsoft.com</a>%7Ccba94a6d611e4700<br>
| 212608d88f87414e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C1%7C63741715981285<br>
| 9933%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1<br>
| haWwiLCJXVCI6Mn0%3D%7C3000&sdata=dyYFsh09gm4vxafb%2FRfa36jb8QT%2BBlHUtx1<br>
| OK6AMf%2BE%3D&reserved=0<br>
| <br>
| <br>
| _______________________________________________<br>
| ghc-steering-committee mailing list<br>
| <a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a><br>
| <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmail.haske" rel="noreferrer" target="_blank">https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmail.haske</a><br>
| <a href="http://ll.org" rel="noreferrer" target="_blank">ll.org</a>%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-steering-<br>
| committee&data=04%7C01%7Csimonpj%<a href="http://40microsoft.com" rel="noreferrer" target="_blank">40microsoft.com</a>%7Ccba94a6d611e470021260<br>
| 8d88f87414e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C1%7C637417159812859933%<br>
| 7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwi<br>
| LCJXVCI6Mn0%3D%7C3000&sdata=er3qe80%2BcqnIn3UIKfjuGu4VDwkH7jEosJqR45eKvn<br>
| 4%3D&reserved=0<br>
_______________________________________________<br>
ghc-steering-committee mailing list<br>
<a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a><br>
<a href="https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee" rel="noreferrer" target="_blank">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee</a><br>
</blockquote></div>