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.

Reply via email to