dynamic classes and duck typing

Steven Schveighoffer schveiguy at yahoo.com
Tue Dec 1 13:10:30 PST 2009


On Tue, 01 Dec 2009 16:01:41 -0500, Bill Baxter <wbaxter at gmail.com> wrote:

> On Tue, Dec 1, 2009 at 12:38 PM, Steven Schveighoffer
> <schveiguy at yahoo.com> wrote:
>> On Tue, 01 Dec 2009 15:06:27 -0500, Pelle Månsson  
>> <pelle.mansson at gmail.com>
>> wrote:
>>
>>> Steven Schveighoffer wrote:
>>
>>>>  Isn't opBinary almost identical to opDispatch?  The only difference I
>>>> see is that opBinary works with operators as the 'symbol' and  
>>>> dispatch works
>>>> with valid symbols.  Is it important to distinguish between operators  
>>>> and
>>>> custom dispatch?
>>>>  -Steve
>>>
>>> opBinary is a binary operator, opDispatch can be anything. I think they
>>> should be kept separate.
>>
>> You could say the same thing about dynamic properties.  How come we  
>> don't
>> split those out as opProperty?
>
> That's because of what Andrei pointed out:  &a.b .
> The compiler can't tell if you want a delegate to the method b, or the
> address of a property b.

Huh?

>
>> opDispatch can do opBinary, it's a subset.  It makes no sense to define
>> opDispatch(string s)() if(s == "+") I agree, but I don't see any reason  
>> why
>> opBinary(string s)() would fail to compile...
>
> I don't get your point.  It's the compiler that decides to call
> opBinary and it's only gonna decide to do so for binary operators.
> Even if you pretend opBinary can accept any string.

My point is, the set of strings passed by the compiler to opBinary is  
completely disjoint from the set of strings passed by the compiler to  
opDispatch.  So the only reason to keep them separate is because you want  
to force people to split their code between operators and  
methods/properties.

There is no technical reason we need to keep them separate or to combine  
them that I can see.

-Steve



More information about the Digitalmars-d mailing list