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.