Fully dynamic d by opDotExp overloading

Don nospam at nospam.com
Fri Apr 17 22:36:52 PDT 2009


davidl wrote:
> ÔÚ Sat, 18 Apr 2009 03:45:43 +0800£¬Nick Sabalausky <a at a.a> дµÀ:
> 
>> "Andrei Alexandrescu" <SeeWebsiteForEmail at erdani.org> wrote in message
>> news:gsak2p$1s8a$1 at digitalmars.com...
>>>
>>> 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.
>>>
>>> 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.
>>>
>>
>> That's a separate issue. I absolutely agree with the usefulness of being
>> able to invoke static methods via a string identifier at runtime. But I
>> think opDotExp is an extremely flawed way to do it. A much better way 
>> would
>> be through a reflection mechanism:
>>
> 
> The opDot func can be extremely restrictive by looking up a former added 
> table which are function fingerprints registered by a method call like 
> dynamo.addMethod("myfunc", &myfunc);
> dynamo.Lenght or dynamo.mymethud would just result runtime exception, 
> because you didn't register these functions.

The problem is a lack of notification at compile time. Runtime 
exceptions are the problem, not the solution.

By the way, if the opDot is a template (per Andrei's suggestion), then 
if it is marked as nothrow, you have a guarantee that if it compiles, 
it's valid.
nothrow opDot(char [])(args...) doesn't have any of the problems which 
Nick et. al have mentioned.



More information about the Digitalmars-d mailing list