Fully dynamic d by opDotExp overloading

Steven Schveighoffer schveiguy at yahoo.com
Sun Apr 19 07:34:16 PDT 2009


On Sun, 19 Apr 2009 10:26:11 -0400, Steven Schveighoffer  
<schveiguy at yahoo.com> wrote:

> 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.

Not to mention, how does the compiler know that it should use range-style  
foreach instead of opApply-style foreach...

In fact, I think any object that uses opDotExp to define the foreachable  
methods might be unusable in foreach.

-Steve



More information about the Digitalmars-d mailing list