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