Fully dynamic d by opDotExp overloading

Steven Schveighoffer schveiguy at yahoo.com
Sun Apr 19 07:26:11 PDT 2009


On Sun, 19 Apr 2009 06:26:57 -0400, Denis Koroskin <2korden at gmail.com>  
wrote:

> On Sun, 19 Apr 2009 05:40:32 +0400, Steven Schveighoffer  
> <schveiguy at yahoo.com> wrote:
>
>> On Sat, 18 Apr 2009 21:10:27 -0400, Andrei Alexandrescu  
>> <SeeWebsiteForEmail at erdani.org> wrote:
>>
>>> Adam Burton wrote:
>>>> Andrei Alexandrescu wrote:
>>>>>> What about using something like '->' for dynamic calls instead of  
>>>>>> '.'?
>>>>> That's absolutely useless. If I have to write anything different from
>>>>> "." I might as well write "bloodyMaryBloodyMaryBloodyMary".
>>>>>
>>>>> Andrei
>>>> You could even write 'noodles' but that doesn't really give me a  
>>>> reason as to why it's absolutely useless. Please clarify, I thought  
>>>> it seemed like a reasonable idea, if it isn't I would like to know  
>>>> why.
>>>
>>> I apologize for the snapping. There's no excuse really, but let me  
>>> mention that this thread has been particularly meandering.
>>>
>>> The point of using "." is not syntactic convenience as much as the  
>>> ability of the Dynamic structure to work out of the box with  
>>> algorithms that use the standard notation.
>>
>> Hm... the thought just occurred to me.
>>
>> At what time are you going to use opDotExp so an entity be used in an  
>> algorithm rather than actually defining the functions directly?  For  
>> example, if you want to make a class/struct a range, why not just  
>> define the functions directly?  It seems odd to define them using  
>> opDotExp.
>>
>
> Variant variantRange = someRange();
> foreach (element; variantRange) {
>     // ...
> }
>
> Variant forwards all the front/back/etc methods to an underlying range.

Doesn't the current opDot solution do this?  Forwarding all calls to a  
certain member is not a really compelling argument for changing opDot to  
allow dynamic method names.

-Steve



More information about the Digitalmars-d mailing list