<div dir="ltr">Hello,<div><br></div><div>I think accepting (C2a) over (C4) is a mistake, and reading Simon's specification of (C2a) does nothing to dispel my uneasiness about this choice. </div><div><br></div><div>To Alejandro's points:</div><div><br></div><div>   - As Joachim pointed out, (C4) is how OCaml works, not (C2a).  I wonder what the additional complexity of the specification buys us?   In the draft document Simon describes it as "more conservative", but it actually requires more work to both implement and specify.</div><div><br></div><div>   - Indeed, you could write some expressions that might look confusing at first, but I don't see why would you?  After all, one could use the exact same argument for many other notations in pretty much any programming language (e.g., operator precedences can be used to write confusing code---it doesn't mean that they are not very useful sometime).</div><div><br></div><div>   - Using white space in selectors is probably not going to be used a lot, but I could imagine it being useful if you have some nested records, and the field names are long.  For example, I could see myself writing something like this:</div><div>```</div><div>someRecord</div><div>   .outterField</div><div>   .innerField</div><div>```</div><div>I realize this style could be a matter of taste, but I don't see any reason for us to go out of our way to disallow it.</div><div><br></div><div>-Iavor</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Mar 31, 2020 at 7:21 AM Richard Eisenberg <<a href="mailto:rae@richarde.dev">rae@richarde.dev</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 style="overflow-wrap: break-word;"><br><div><br><blockquote type="cite"><div>On Mar 31, 2020, at 2:09 PM, Simon Peyton Jones <<a href="mailto:simonpj@microsoft.com" target="_blank">simonpj@microsoft.com</a>> wrote:</div><br><div><div style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><span>Yes I do.  Please do!   And, it’s terribly late in the day, but if anyone wants to raise a new issue, please do so.</span></div></div></blockquote><div><br></div><div>Done. Tiny changes, but I think they will avoid the mistakes I made in interpretation.</div><br><blockquote type="cite"><div><div style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><span><u></u><u></u></span></div><div style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><span><u></u> <u></u></span></div><div style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><span><u></u> <u></u></span></div><div style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><span>I do wonder about explicitly calling out the possibility of having (a) the syntactic sugar of this proposal with (b) no overloading.   So that<u></u><u></u></span></div><div style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><span>    r.x   desugars to   (x r)<u></u><u></u></span></div><div style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><span>    e { x = e2 }    desugars to   case e of K { .. } -> K { x=e2, .. }<u></u><u></u></span></div><div style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><span>or something like that.  That is strictly beyond what the proposal currently does, which is to *<b>always</b>* use setField/getField.  But that means that for records with polymorphic fields you simply can’t use the proposal at all.</span></div></div></blockquote></div><br><div>That is interesting, but I say that it is too late. Effectively, we've accepted this proposal (modulo "what happens next"). You're welcome to write a fresh proposal with that idea. :)</div><div><br></div><div>Richard</div></div>_______________________________________________<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>