<div dir="ltr"><div>Should the text "except when parenthesised (.x)" in C2b also be added to C2a?</div><div><br></div><div>Note 5 should apply to C7 too, now?<br></div><div><br></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 16 Mar 2020 at 14:43, Simon Peyton Jones <<a href="mailto:simonpj@microsoft.com">simonpj@microsoft.com</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">





<div lang="EN-GB">
<div class="gmail-m_-1876326876990607687WordSection1">
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:36pt">
The examples are good, but I know from experience it's easy to overlook things if we don't consider what the precise grammar is, both at the lexical and context-free levels. So I wouldn't feel comfortable voting on a proposal where the grammar isn't completely
 clear. <u></u><u></u></p>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
I agree with that in principle, but I don’t want to ask the authors to work up 6 or 7 different full syntaxes, just to us to accept at most one.  If it turns that the one we accept (if indeed we accept any) is hard to define, let’s revisit.<u></u><u></u></p></div></div></blockquote><div><br></div><div>OK, sounds reasonable.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div lang="EN-GB"><div class="gmail-m_-1876326876990607687WordSection1"><p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm"></p>
<ul style="margin-top:0cm" type="disc">
<li class="gmail-m_-1876326876990607687MsoListParagraph" style="margin-top:6pt;margin-bottom:6pt;margin-left:0cm">
Is (.a.b) legal? Under which alternatives? What about (.a .b)? What about (. .x)?<u></u><u></u></li></ul>
<p class="gmail-m_-1876326876990607687MsoListParagraph" style="margin-right:0cm;margin-bottom:6pt;margin-left:36pt">
I have added some new words to clarify lexical syntax, which should answer your question.  Please say if not.<u></u><u></u></p>
<ul style="margin-top:0cm" type="disc">
<li class="gmail-m_-1876326876990607687MsoListParagraph" style="margin-top:6pt;margin-bottom:6pt;margin-left:0cm">
Does ( .x) mean (.x) or (. x)?<u></u><u></u></li></ul>
<p class="gmail-m_-1876326876990607687MsoListParagraph" style="margin-right:0cm;margin-bottom:6pt;margin-left:36pt">
Same as any other operator like (+). You can write (+ ) or ( +) or (+) or ( + ).   But since (. x) has  lexeme for “.” and one for “x”, that’s different.  See the new words.<u></u><u></u></p>
<ul style="margin-top:0cm" type="disc">
<li class="gmail-m_-1876326876990607687MsoListParagraph" style="margin-top:6pt;margin-bottom:6pt;margin-left:0cm">
I presume under C2a things like 3.x, "abc".y, and [1,2,3].z would be legal…<u></u><u></u></li></ul>
<p class="gmail-m_-1876326876990607687MsoListParagraph" style="margin-right:0cm;margin-bottom:6pt;margin-left:36pt">
One of the great disadvantages of C2a and C3 is the awkwardness of defining tight infix for dot.  See Note 4.<u></u><u></u></p>
<ul style="margin-top:0cm" type="disc">
<li class="gmail-m_-1876326876990607687MsoListParagraph" style="margin-top:6pt;margin-bottom:6pt;margin-left:0cm">
data R = R { (.) :: Int }   This is a good point which applies to the entire proposal.  It needs to be addressed.  But it’s very much a corner case, and we should not let the tail wag the dog.</li></ul></div></div></blockquote><div>OK. But the misdesign of qualified identifiers led to the situation where no Haskell compiler conforms to the spec, since the spec is silly (eg. the spec says M... lexes as the two lexemes M.. .). We should strive to avoid making that situation worse.<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div lang="EN-GB"><div class="gmail-m_-1876326876990607687WordSection1"><ul style="margin-top:0cm" type="disc"><li class="gmail-m_-1876326876990607687MsoListParagraph" style="margin-top:6pt;margin-bottom:6pt;margin-left:0cm"><u></u><u></u></li><li class="gmail-m_-1876326876990607687MsoListParagraph" style="margin-top:6pt;margin-bottom:6pt;margin-left:0cm">
Can I use a record selector infix by surrounding it with ``? i.e. is `.x` a legal infix operator?  (I'm guessing not)<u></u><u></u></li></ul>
<p class="gmail-m_-1876326876990607687MsoListParagraph" style="margin-right:0cm;margin-bottom:6pt;margin-left:36pt">
You can clearly say `(.x)`.   I would guess that you can’t omit the parens.  Again, should ultimately be nailed down but doesn’t really affect our decision making.<u></u><u></u></p></div></div></blockquote><div><br></div><div>Really? You can't say `(+)` right now in Haskell, so it would be surprising if you could say `(.x)`</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div lang="EN-GB"><div class="gmail-m_-1876326876990607687WordSection1"><p class="gmail-m_-1876326876990607687MsoListParagraph" style="margin-right:0cm;margin-bottom:6pt;margin-left:36pt"></p>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
Do the clarifications in the document allow you enough clarity to make an informed choice?</p></div></div></blockquote><div><br></div><div>Kind of :) I'm happy to proceed on the basis that we're choosing high-level direction and the details will be worked out later, but it may be that some or all of these proposals lead to significant ugliness in their full specification. </div><div><br></div><div>Cheers</div><div>Simon</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div lang="EN-GB"><div class="gmail-m_-1876326876990607687WordSection1"><p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm"><u></u><u></u></p>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
<u></u> <u></u></p>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
Simon<u></u><u></u></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<div style="border-color:currentcolor currentcolor currentcolor blue;border-style:none none none solid;border-width:medium medium medium 1.5pt;padding:0cm 0cm 0cm 4pt">
<div>
<div style="border-color:rgb(225,225,225) currentcolor currentcolor;border-style:solid none none;border-width:1pt medium medium;padding:3pt 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> Simon Marlow <<a href="mailto:marlowsd@gmail.com" target="_blank">marlowsd@gmail.com</a>>
<br>
<b>Sent:</b> 15 March 2020 13:22<br>
<b>To:</b> Simon Peyton Jones <<a href="mailto:simonpj@microsoft.com" target="_blank">simonpj@microsoft.com</a>><br>
<b>Cc:</b> Christopher Allen <<a href="mailto:cma@bitemyapp.com" target="_blank">cma@bitemyapp.com</a>>; Cale Gibbard <<a href="mailto:cgibbard@gmail.com" target="_blank">cgibbard@gmail.com</a>>; ghc-steering-committee <<a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a>><br>
<b>Subject:</b> Re: RecordDotSyntax proposal: next steps<u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
The examples are good, but I know from experience it's easy to overlook things if we don't consider what the precise grammar is, both at the lexical and context-free levels. So I wouldn't feel comfortable voting on a proposal where the grammar isn't completely
 clear. Some questions that come to mind given the current set of proposals:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
<u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
Is (.a.b) legal? Under which alternatives? What about (.a .b)? What about (. .x)?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
<u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
Does ( .x) mean (.x) or (. x)?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
<u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
I presume under C2a things like 3.x, "abc".y, and [1,2,3].z would be legal, given suitable instances for Integral, IsString, or IsList? Which other proposals does that apply to?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
<u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
If I have a record with a varsym field name, can I use dot syntax with it? e.g. <u></u>
<u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
data R = R { (.) :: Int }<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
Now can I say r.(.) or r..? (note that the qualified name equivalent of this is M.. which is legal). If r.. is legal, presumably I should be able to use (..)? I suspect there are a lot of worms in this can :)<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
<u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
Can I use a record selector infix by surrounding it with ``? i.e. is `.x` a legal infix operator?  (I'm guessing not)<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
<u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
By the way, I understand the authors of the original proposal are against C5 so if that were the committee's preferred option then someone else would need to adopt the proposal.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
<u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
Cheers<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
Simon<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
<u></u> <u></u></p>
</div>
<div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
On Fri, 13 Mar 2020 at 17:43, Simon Peyton Jones <<a href="mailto:simonpj@microsoft.com" target="_blank">simonpj@microsoft.com</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-color:currentcolor currentcolor currentcolor rgb(204,204,204);border-style:none none none solid;border-width:medium medium medium 1pt;padding:0cm 0cm 0cm 6pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<p class="MsoNormal">Thanks.   You can’t vote if you don’t understand the alternatives!  And if you can’t maybe others can’t – or will do so based on different understandings of the same thing.  That
 would be Bad.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">I’m not well positioned to fix this because I don’t know where the ambiguities are.  Would you like to ask some clarifying questions?<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">Simon<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<div style="border-style:none none none solid;border-width:medium medium medium 1.5pt;padding:0cm 0cm 0cm 4pt;border-color:currentcolor currentcolor currentcolor blue">
<div>
<div style="border-style:solid none none;border-width:1pt medium medium;padding:3pt 0cm 0cm;border-color:currentcolor">
<p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> Simon Marlow <<a href="mailto:marlowsd@gmail.com" target="_blank">marlowsd@gmail.com</a>>
<br>
<b>Sent:</b> 13 March 2020 17:30<br>
<b>To:</b> Simon Peyton Jones <<a href="mailto:simonpj@microsoft.com" target="_blank">simonpj@microsoft.com</a>><br>
<b>Cc:</b> Christopher Allen <<a href="mailto:cma@bitemyapp.com" target="_blank">cma@bitemyapp.com</a>>; Cale Gibbard <<a href="mailto:cgibbard@gmail.com" target="_blank">cgibbard@gmail.com</a>>; ghc-steering-committee <<a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a>><br>
<b>Subject:</b> Re: RecordDotSyntax proposal: next steps</span><u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:6pt">It's still a bit hard (IMO) to understand what precise changes each proposal would make to the syntax, but I don't want to hold things up so I've added an AYE.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:6pt"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:6pt">Cheers<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:6pt">Simon<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:6pt"> <u></u><u></u></p>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:6pt">On Fri, 13 Mar 2020 at 10:38, Simon Peyton Jones <<a href="mailto:simonpj@microsoft.com" target="_blank">simonpj@microsoft.com</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-style:none none none solid;border-width:medium medium medium 1pt;padding:0cm 0cm 0cm 6pt;margin:5pt 0cm 5pt 4.8pt;border-color:currentcolor currentcolor currentcolor rgb(204,204,204)">
<div>
<div>
<p class="MsoNormal">Chris, Cale, Simon<u></u><u></u></p>
<p class="MsoNormal">I wonder if you might have a moment to respond to this email?<u></u><u></u></p>
<p class="MsoNormal">Thanks<u></u><u></u></p>
<p class="MsoNormal">Simon<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<div style="border-style:none none none solid;border-width:medium medium medium 1.5pt;padding:0cm 0cm 0cm 4pt;border-color:currentcolor currentcolor currentcolor blue">
<div>
<div style="border-style:solid none none;border-width:1pt medium medium;padding:3pt 0cm 0cm;border-color:currentcolor">
<p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> Simon Peyton Jones <<a href="mailto:simonpj@microsoft.com" target="_blank">simonpj@microsoft.com</a>>
<br>
<b>Sent:</b> 09 March 2020 09:56<br>
<b>To:</b> ghc-steering-committee <<a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a>><br>
<b>Cc:</b> Simon Peyton Jones <<a href="mailto:simonpj@microsoft.com" target="_blank">simonpj@microsoft.com</a>><br>
<b>Subject:</b> RE: RecordDotSyntax proposal: next steps</span><u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">Colleagues<u></u><u></u></p>
<p class="MsoNormal">Thanks for your various replies.   I have<u></u><u></u></p>
<ul type="disc">
<li class="gmail-m_-1876326876990607687gmail-m-5309882685057624624gmail-m8896642913182345709msolistparagraph">
Added a couple more examples (please check)<u></u><u></u></li><li class="gmail-m_-1876326876990607687gmail-m-5309882685057624624gmail-m8896642913182345709msolistparagraph">
Split (C2a) and (C2b) – thank you Joachim for filling out the list.<u></u><u></u></li><li class="gmail-m_-1876326876990607687gmail-m-5309882685057624624gmail-m8896642913182345709msolistparagraph">
Add a Notes section that identifies some consequences, hopefully objectively.<u></u><u></u></li><li class="gmail-m_-1876326876990607687gmail-m-5309882685057624624gmail-m8896642913182345709msolistparagraph">
Added a list  at the end where you can add your AYE when happy.<u></u><u></u></li></ul>
<p class="MsoNormal">Can you review, and Christopher, Richard, Cale, Simon, Eric, Alejandro, Arnaud: please add AYE or suggest further changes.<u></u><u></u></p>
<p class="MsoNormal">This is painstaking but I think it is clarifying. I have found writing out the examples is quite helpful.  Feel free to suggest more if you think there are some cases that are unclear.<u></u><u></u></p>
<p class="MsoNormal">Thanks<u></u><u></u></p>
<p class="MsoNormal">Simon<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<div style="border-style:none none none solid;border-width:medium medium medium 1.5pt;padding:0cm 0cm 0cm 4pt;border-color:currentcolor currentcolor currentcolor blue">
<div>
<div style="border-style:solid none none;border-width:1pt medium medium;padding:3pt 0cm 0cm;border-color:currentcolor">
<p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> Simon Peyton Jones <<a href="mailto:simonpj@microsoft.com" target="_blank">simonpj@microsoft.com</a>>
<br>
<b>Sent:</b> 06 March 2020 17:59<br>
<b>To:</b> ghc-steering-committee <<a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a>><br>
<b>Cc:</b> Simon Peyton Jones <<a href="mailto:simonpj@microsoft.com" target="_blank">simonpj@microsoft.com</a>><br>
<b>Subject:</b> RecordDotSyntax proposal: next steps</span><u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">Colleagues<u></u><u></u></p>
<p class="MsoNormal">I’m sorry to have been dragging my feet on the records proposal.   First there was half term holiday, and then the ICFP deadline, so I’ve been out of action for several weeks.<u></u><u></u></p>
<p class="MsoNormal">It’s pretty clear that we are not going to achieve 100% consensus, so the right thing to do is to vote, using the single-transferrable-vote scheme that Joachim runs.  It’s worth
 striving for consensus, because the debate can be clarifying (and has been!).  But I don’t regard non-consensus as a failure.  These things are all judgement calls, and people’s judgement can legitimately differ.   Voting lets us nevertheless reach a conclusion.<u></u><u></u></p>
<p class="MsoNormal">So here’s what I propose<u></u><u></u></p>
<ul type="disc">
<li class="gmail-m_-1876326876990607687gmail-m-5309882685057624624gmail-m8896642913182345709msolistparagraph">
I’ve put up a <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.google.com%2Fdocument%2Fd%2F1MgovHRUUNjbuM4nM8qEe308MfbAYRh2Q8PxFHl7iY74%2Fedit%3Fusp%3Dsharing&data=02%7C01%7Csimonpj%40microsoft.com%7C6211b3c422ef483414b708d7c8e3d967%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637198753236487549&sdata=PZo0sVH3fsQPAecTzN5DCsN9UNbaaGi563PxuO2%2BnaI%3D&reserved=0" target="_blank">
list of choices for us to vote on here</a>, informed by our most recent email exchanges. The first thing is to ensure that this list is<u></u><u></u></li></ul>
<ul type="disc">
<ol type="a" start="1">
<li class="gmail-m_-1876326876990607687gmail-m-5309882685057624624gmail-m8896642913182345709msolistparagraph">
<b>Complete</b>: no choices that people really want are omitted.<u></u><u></u></li><li class="gmail-m_-1876326876990607687gmail-m-5309882685057624624gmail-m8896642913182345709msolistparagraph">
<b>Clear</b> <b>and unambiguous</b>.  When we vote we must know exactly what we are voting for!  
<u></u><u></u></li></ol>
</ul>
<p class="MsoNormal" style="margin-left:36pt">
<b>Can you all respond about that, including “Aye” if you think it is both complete and clear</b>.<u></u><u></u></p>
<ul type="disc">
<li class="gmail-m_-1876326876990607687gmail-m-5309882685057624624gmail-m8896642913182345709msolistparagraph">
Once we are all satisfied, I’ll invite you to vote.  The easiest way to do so might be to edit the Google doc directly, so there’s a single point of reference.<u></u><u></u></li></ul>
<p class="MsoNormal">Please also let me know if you think we should be doing anything else.<u></u><u></u></p>
<p class="MsoNormal">Thanks!<u></u><u></u></p>
<p class="MsoNormal">Simon<u></u><u></u></p>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>

</blockquote></div></div>