Revised RFC on range design for D2

Charles Hixson charleshixsn at earthlink.net
Fri Oct 3 16:39:52 PDT 2008


KennyTM~ wrote:
> Sergey Gromov wrote:
>> Thu, 02 Oct 2008 15:03:42 -0500,
>> Andrei Alexandrescu wrote:
>>> Yah, overloaded ops are due for an overhaul. I'm almost afraid to 
>>> ask... any ideas? :o)
>>>
>>> One goal is to fix opIndexAssign and make it work similar to the way 
>>> it works in arrays, e.g. a[b] += c. Indexing into hash tables is a 
>>> good test bed.
>>
>> What's wrong with a.opIndexAssign(b, a.opIndex(b) + c)?
> 
> Probably performance.
> 
> Consider seeking to the end of a 100M-node single-linked list, and 
> increase its content by 1.
> 
> But I agree that if something like .opIndexAddAssign() is not defined, 
> the compiler should fall back to use a.opIndexAssign(b, a.opIndex(b)+c).
> 
> (The same idea can be extended to properties and .opSlice() )
But if the requirement is that it should have the same *meaning* as 
a.opIndexAssign(b, a.opIndex(b) + c) , then actual implementation for 
performance can be considered a compiler optimization feature.

Just because one piece of code means the same thing as another doesn't 
mean it has to be implemented the same way, or can't be optimized.


More information about the Digitalmars-d-announce mailing list