Breaking ";" rule with lambda functions

frame frame86 at
Mon Aug 1 17:01:33 UTC 2022

On Monday, 1 August 2022 at 14:15:31 UTC, pascal111 wrote:
> We all know the strange syntax of lambda function within filter 
> algorithm like "auto r = chain(a, b).filter!(a => a > 0);". My 
> note is, don't we break D rules by leaving ";" after lambda 
> function syntax?!
> Many of D rules are taken from C, we know that, so a general 
> basic rule is to put ";" after each statement, so the previous 
> statement of filter should be "auto r = chain(a, b).filter!(a 
> => a > 0;);"? Why D leaves ";" in this case?

In C ";" is a termination character, in D is more like to 
separate statements.

The lexer wouldn't need ";" for most cases like JavaScript and 
the expression syntax without ";" is better to read anyway.

However, the common settlement is to require a ";" where it makes 
logical sense and where it's still needed for the lexer. So we 
have this.

More information about the Digitalmars-d-learn mailing list