Fully dynamic d by opDotExp overloading

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Fri Apr 17 12:08:12 PDT 2009


Nick Sabalausky wrote:
> "Steven Schveighoffer" <schveiguy at yahoo.com> wrote in message 
> news:op.usjnzajzeav7ka at steves.networkengines.com...
>> On Fri, 17 Apr 2009 14:32:07 -0400, Nick Sabalausky <a at a.a> wrote:
>>
>> My main concern that I've read so far is how if a class has a dynamic 
>> method dispatcher that's callable like a method, you can't rely on the 
>> compiler to help you typecheck (or spellcheck) the *non-dynamic* methods, 
>> because it will just default to sending incorrectly typed data or 
>> misspelled methods to the dynamic dispatcher.
> 
> That is a *very* good point, that hadn't even occured to me.
> 
>> I think dynamic methods  have a very limited use, and probably aren't 
>> worth polluting the D  language for a few rare cases.
>>
> 
> Agreed.
> 
>> When you know the API ahead of time,  you're almost always better off to 
>> have statically typed objects.  When  you don't know it ahead of time, 
>> well, I prefer the uglyness of seeing the  quoted strings to having the 
>> compiler just start trusting everything I do  ;)
>>
> 
> Agreed.

I think there's merit in binding via strings. It makes for very flexible 
code that is future-proof, dynamic-linking-friendly, and hot-swappable 
without recompiling (e.g. you don't need to recompile because you now 
implement an interface etc.) Reflection is very useful as well.

If anything, this agreed-fest shows that the rift between static typing 
and dynamic typing is alive and well. I've seen many discussions in 
which people were mystified how anyone gets anything done in a 
statically-typed OO language. (In fairness, static typing and OO have at 
best a tense marriage.)

But anyway, my point is that it's good to be open-minded. If this 
conversation does nothing but leave us firmly with our heels in 
static-land, then we haven't gained anything. If we weren't used to 
static types we wouldn't be here. I think D can and should allow string 
lookup for its methods. It's a low-complexity proposition that adds a 
very interesting tool to D's arsenal. I suggested Walter since a long 
time ago to support opDot!(string). He implemented the useless version 
(sigh) which was arguably much simpler and offered a cheap way to 
experiment. So I'm very happy it's back on the table, and with an 
implementation to boot. Congratulations David.


Andrei



More information about the Digitalmars-d mailing list