On Monday, 24 March 2014 at 01:28:02 UTC, Kenji Hara wrote:
I'm partially against to it.
1. I think removing comma operator does not have useful effect
for tuple
syntax discussion. For example:
1a. If you want to use parenthesis syntax (...) for tuple,
we should
resolve one-element tuple ambiguity first.
(exp) // one-element tuple, or just an expression ?
And, removing comma operator does not resolve this issue.
I believe this is a non-issue. From a language-users POV, there
should be no difference between a one-element tuple and an
expression, thus there's no need to distinguish the two. (The
actual implementation in the compiler may of course treat them
differently.)
1b. If you choose other syntax for tuple, comma operator
will be no
longer related to tuple syntax discussion.
{exp, exp2} // eg. using brace for tuple syntax no
longer touch to
comma operator
I'd prefer parentheses, but that's bike-shedding, of course. In
any case, it's better to have some freedom in choosing the final
syntax, rather than being forced to use one that is less
well-liked/intuitive.
2. Indeed in some case comma operator is bug-prone, but if it
is used
directly on the ExpStatement, it's still useful to me.
foreach (e; exp1, exp2) {} // maybe bug?
if (cond) exp1, exp2; // in most case, this is not a bug.
So, completely removing comma operator will cause negative
affect in
some cases.
IMO this is bad style. It only saves a few characters, but
hampers readability. The example with the assert() and the
ternary operator that someone else gave is much more relevant,
however, as it's somewhat harder to rewrite (need to resort to a
lambda literal, or rewrite as statements).