bigfloat

Benji Smith dlanguage at benjismith.net
Sun Apr 12 15:06:26 PDT 2009


Daniel Keep wrote:
> 
> Andrei Alexandrescu wrote:
>> dsimcha wrote:
>>> Well, now that I understand your proposal a little better, it makes
>>> sense.  I had
>>> wondered why the current AA implementation uses RTTI instead of
>>> templates.  Even
>>> better would be if only the default implementation were in Object, and
>>> a user
>>> could somehow override which implementation of AA is given the
>>> blessing of pretty
>>> syntax by some pragma or export alias or something, as long as the
>>> implementation
>>> conforms to some specified compile-time interface.
>> Great! For now, I'd be happy if at least the user could hack their
>> import path to include their own object.d before the stock object.d.
>> Then people can use straight D to implement the AssocArray they prefer.
>> Further improvements of the scheme will then become within reach!
>>
>> Andrei
> 
> dmd -object=myobject.d stuff.d
> 
> That would require the user to duplicate everything in object, which is
> a little messy.  Maybe it would be a good idea to break object itself
> into a bunch of public imports to core.internal.* modules, then allow this:
> 
> dmd -sub=core.internal.aa=myaa stuff.d
> 
> Of course, it's probably simpler still to have this:
> 
> dmd -aatype=myaa.AAType stuff.d
> 
>   -- Daniel

Instead, what if the literal syntax was amended to take an optional type 
name, like this:

    // Defaults to using built-in associative array type
    auto assocArray = [
       "hello" : "world
    ];

    // Uses my own custom type.
    auto hashtable = MyHashTableType!(string, string) [
       "hello" : "world
    ];

You could accomplish that pretty easily, as long as the custom type had 
a no-arg constructor and a function with the signature:

    void add(K key, V val)

--benji



More information about the Digitalmars-d mailing list