<div dir="ltr"><div><p style="margin:0px 0px 1.2em!important">When I first picked up Haskell professionally, I was told “we don’t write <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">f.g</code>, we write <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">f . g</code>, because when someone manages to add the record syntax, the former will be record selection”. So I’ve always considered <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">f.g</code> to be forbidden syntax. Morally a syntax error, if you will, that the parser accidentally didn’t catch.</p>
<p style="margin:0px 0px 1.2em!important">So, while it is true that <i>today</i> <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">f r.x</code> parses as <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">(f r).x</code> (that is, (B)). I see no objection for (A), which does make more visual sense to me.</p>
<div title="MDH:PGRpdj5XaGVuIEkgZmlyc3QgcGlja2VkIHVwIEhhc2tlbGwgcHJvZmVzc2lvbmFsbHksIEkgd2Fz
IHRvbGQg4oCcd2UgZG9uJ3Qgd3JpdGUgYGYuZ2AsIHdlIHdyaXRlIGBmIC4gZ2AsIDxzcGFuIHpl
dW00YzI9IlBSXzFfMCIgZGF0YS1kZG53YWI9IlBSXzFfMCIgYXJpYS1pbnZhbGlkPSJncmFtbWFy
IiBjbGFzcz0iTG0gbmciPmJlY2F1c2Ugb2Ygd2hlbjwvc3Bhbj4gc29tZW9uZSBtYW5hZ2VzIHRv
IGFkZCB0aGUgcmVjb3JkIHN5bnRheCwgdGhlIGZvcm1lciB3aWxsIGJlIHJlY29yZCBzZWxlY3Rp
b27igJ0uIFNvIEkndmUgYWx3YXlzIGNvbnNpZGVyZWQgYGYuZ2AgdG8gYmUgZm9yYmlkZGVuIHN5
bnRheC4gTW9yYWxseSBhIHN5bnRheCBlcnJvciwgaWYgeW91IHdpbGwsIHRoYXQgdGhlIHBhcnNl
ciBhY2NpZGVudGFsbHkgZGlkbid0IGNhdGNoLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+U28s
IHdoaWxlIGl0IGlzIHRydWUgdGhhdCBfdG9kYXlfIGBmIHIueGAgcGFyc2VzIGFzIGAoZiByKS54
YCAodGhhdCBpcywgKEIpKS4gSSBzZWUgbm8gb2JqZWN0aW9uIGZvciBgKEEpYCwgd2hpY2ggZG9l
cyBtYWtlIG1vcmUgdmlzdWFsIHNlbnNlIHRvIG1lLjxicj48L2Rpdj4=" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0"></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Dec 12, 2019 at 10:49 AM Simon Marlow <<a href="mailto:marlowsd@gmail.com" target="_blank">marlowsd@gmail.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 dir="ltr">Definitely (A).<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 12 Dec 2019 at 09:44, Simon Peyton Jones via ghc-steering-committee <<a href="mailto:ghc-steering-committee@haskell.org" target="_blank">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">A question for the committee. <br>
<br>
What does <br>
f r.x<br>
mean, where there is no white space on either side of the dot?<br>
<br>
A. The proposal says it means (f (r.x))<br>
B. Joachim wants it to mean ((f r).x)<br>
<br>
In trying to guide the discussion to a conclusion I proposed to fix on (A). I don't think it was controversial in the public discussion, it's compatible with qualified names, and forcing `f (r.x)` looks horribly clumsy to me.<br>
<br>
Partly it's a question of whether your starting point is<br>
(a) "." is fundamentally an operator, albeit with <br>
some special extra rules, or<br>
(b) R.x, r.x, and .x are new syntactic forms,<br>
unrelated to the infix operator (.)<br>
I'm definitely thinking of it in the latter way.<br>
<br>
I don't really want to re-open this question, and I'm not sure if the authors of the proposal could live with (B). However, if the committee wants to reopen the question, then that is what we should do. Can you express a view on this narrow question?<br>
<br>
Simon<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>
_______________________________________________<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>