Andrei Alexandrescu:
> Great point. My hope is that one day I'll manage to convince Walter and 
> Sean to simply replace V[K] types with AssocArray!(K, V) and then make 
> AssocArray a regular template inside object.d. The current 
> implementation of associative arrays looks... brutal.

Maybe some compromise can be found. I think the current syntax is good enough.

A possible idea is to translate the current AA code to D and create a D module 
(that object imports, if you want) that contains something like that 
AssocArray!(K, V).
Some very useful things are missing in the current AAs:
- OpEquals among AAs, very useful in unit tests, to assert that functions 
return a correct AA.
- Empty AA literal (or expression, I currently use AA!(T, S)).
- Empty AAs can be false.
- A way to clear an AA, like aa.clear or aa.clear();
- A way to perform a shallow copy, like aa.dup
- Possibly lazy view of keys, values and key-value pairs, as in Java and 
Python3.
- A more precise management by the GC.

Then the compiler can map the current syntax to the AssocArray!(K, V) template 
struct/class and its functionality. I don't know if this can be done.
It's also a way to reduce the C code and translate some of it to D.

Bye,
bearophile

Reply via email to