Parenthesis around if/for/while condition is not necessary

user1234 user1234 at 12.nl
Sat Jun 23 06:18:53 UTC 2018


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 otherwise we're good for one 
of this sterile NG discussion leading to nothing, i.e 
intellectual mast... well guess the word.


More information about the Digitalmars-d mailing list