Parenthesis around if/for/while condition is not necessary

Nick Sabalausky (Abscissa) SeeWebsiteToContactMe at semitwist.com
Sat Jun 23 05:36:12 UTC 2018


On 06/22/2018 09:27 PM, 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.
> 

Mainly because of D's C-family lineage. D was designed to use syntax 
that would be familiar to programmers of the other popular C-derived 
languages of the time (mainly: C, C++, Java, C#). Making parens optional 
in a C-ish (more or less) language was largely popularized by Go, but at 
the time, Go didn't exist yet.

Whatever the reasons, I'm personally glad it worked out this way: I find 
it very difficult to visually parse loops and conditionals that omit the 
parens. Without them, there just isn't enough visual "landmarks" for my 
brain's visual center to lock-on and pattern-recognize a standard loop 
or conditional.




More information about the Digitalmars-d mailing list