On Saturday, 23 June 2018 at 06:24:29 UTC, Basile B. wrote:
On Saturday, 23 June 2018 at 06:18:53 UTC, user1234 wrote:
On Saturday, 23 June 2018 at 05:09:13 UTC, aedt wrote:
On Saturday, 23 June 2018 at 04:45:07 UTC, user1234 wrote:
On Saturday, 23 June 2018 at 01:27:30 UTC, aedt wrote:
for line in stdin.lines() {}
if condition {}
while condition {}
for init; condition; op {}
What's the rationale of keeping the requirement that the
condition of if/for/while must be wrapped with a
parenthesis (other than keeping parser simple)? Modern
languages have already dropped this requirement (i.e. Rust,
Nim) and I don't see any reason not to do so.
There is this case that requires parens:
if a && b c;
Is there a missing && or not ? It seems obvious for a human
but compiler parsers are "apparatchiks", i.e rules are
rules. That being said this would work by allowing parens
for disambiguation.
Same thing as the following"
return a && b;
I'm not saying to drop parens completely, I'm saying why is
it not optional. D seems to have no problem with x.to!string
or std.lines
I agree that this would be in adequation with certain stuff of
the D syntax, such as parens-less single template parameter.
Someone has to make a DIP for this
Maybe but this is a simple parser thing. For example after
reading the discussion here i have tested the idea in my toy
programming language
(https://github.com/BBasile/styx/commit/83c96d8a789aa82f9bed254ab342ffc4aed4fd88) and i believe that for D this would be as simple ( < 20 SLOC, w/o the tests).
otherwise we're good for one of this sterile NG discussion
leading to nothing, i.e intellectual mast... well guess the
word.
I'm tempted to try this in DMDFE. Change is simple enough so
that if it get rejected no much time is lost.
FYI this works fine, as expected it's just some small parser
changes.
I didn't touch to for and foreach for now. I think that
SwitchStatement is a candidate too.
https://github.com/BBasile/dmd/commit/5455a65c8fdee5a6d198782d1f168906b59e6d3d
However note that there's a nice thing with the phobos style that
won't be that nice anymore:
if (condition)
action();
----^
if condition)
action();
---^
----^
It's not nicely aligned anymore !