Things that may be removed
Max Samukha
samukha at voliacable.com.removethis
Thu Dec 25 06:36:56 PST 2008
On Thu, 25 Dec 2008 15:09:59 +0100, Frits van Bommel
<fvbommel at REMwOVExCAPSs.nl> wrote:
>Jarrett Billingsley wrote:
>> On Wed, Dec 24, 2008 at 5:24 PM, Yigal Chripun <yigal100 at gmail.com> wrote:
>>> why not replace the current comma operator with tuple support?
>>> the comma op needs to be higher than assingment in precedence and instead of
>>> evaluating the expressions left to right and returning the value of the
>>> _last_ expression as the return value of the op, return _all_ expressions'
>>> return values as a value tuple. the current behavior that is really used
>>> only in for loops can be implemented with tuples as well.
>>>
>>> insted of:
>>> for (int i = 0, long j = 0; ...; ...) {...}
>>
>> Actually that's not legal syntax. You're thinking of "int i = 0, j =
>> 0", which is parsed as a single declaration statement which declares
>> two variables. This does not use the comma operator.
>>
>> The place where the comma operator is used is in the increment:
>>
>> for(..; ..; i++, j++)
>>
>> All that has to be done here is the comma has to be added to the
>> increment grammar of the for loop. (MiniD does this.)
>
>Actually, that isn't even needed. Since the return value of the
>increment is never used, and it can be any type at all, there would be
>no reason to change that line of code at all.
>So the increment clause is suddenly a tuple? Who cares; it still
>increments just fine, doesn't it? :)
>
>The only potential problem (which I just now thought of) would be
>increments with type void (e.g. ++i, iter.step()). Do tuple values allow
>void elements? If not, would it do any harm to allow them?
I wish void values would be legal. One more inconsistency hindering
generic programming would probably go from the type system. Now almost
any place when void is used as a type needs to be special-cased. For
example, I don't see why the following should be illegal:
T foo(T = void)()
{
return T.init;
}
foo(); // error
More information about the Digitalmars-d
mailing list