Should the comma operator be removed in D2?
Justin Johansson
no at spam.com
Mon Nov 16 16:19:34 PST 2009
Bill Baxter wrote:
> On Mon, Nov 16, 2009 at 2:04 PM, Justin Johansson <no at spam.com> wrote:
>> Mentioned in the switch case statements thread, this probably should be a
>> separate discussion thread.
>>
>> Is the comma operator "another piece of C cruft" that needs to be removed
>> from D(2)?
>>
>>
>> grauzone wrote:
>>> Justin Johansson wrote:
>>>> bearophile wrote:
>>>>> What's bad about forcing people to write:
>>>>> case A, B, C:
>>>>>
>>>>> Instead of:
>>>>> case A:
>>>>> case B:
>>>>> case C:
>>>>> ?
>>>>>
>>>>> Bye,
>>>>> bearophile
>>>> I don't know about "forcing people" to write such but perhaps it could
>>>> be an "option for people" :-)
>>>>
>>>> Actually I quite like the brevity you propose but would it be a
>>>> challenge for the comma operator?
>>>>
>>>> While ago, I got D multi-dimensional array syntax messed up and
>>>> declared such an animal as
>>>> int[3,4,5] which effectively ended up declaring the beast as int[5].
>>> The comma operator is another piece of C cruft that needs to go.
>
>
> Note that if comma-as-sequencer was removed, and repurposed as a tuple
> literal (with "a,b" making a tuple), and if we specify that tuple
> elements are evaluated in order, then I think this would work as a
> replacement for the current comma operator:
>
> (expr1,expr2,expr3)[$-1]
>
> But the nice thing is you can get the effect of a comma operator that
> evaluates to the value of any expression in the sequence, just using
> different indices.
> Not sure how odious people would find forcing an order of eval on
> tuples, though.
>
> In the context of a for-loop, you don't care what the value is, so it
> would work as a tuple as-is. The tuple itself would be the value:
>
> for(; i<10; ++i,++j) // just works
>
> Though, probably this case needs some special treatment to continue working:
>
> int i=0,j=0
>
> --bb
Whilst I still have some affection for the C-style comma operator
(particularly wrt for loop construct), but since the Waterfront Real
Estate of operators is extremely limited (borrowing a phrase from
Walter), I think this is an excellent suggestion to re-purpose the
comma operator for higher-value utilization by tuples.
Would the "special treatments" be not too difficult to resolve?
beers,
Justin
More information about the Digitalmars-d
mailing list