On Sat, 17 Oct 2009 14:28:51 -0400, Andrei Alexandrescu <seewebsiteforem...@erdani.org> wrote:

Associative arrays are today quite problematic because they don't offer any true iteration. Furthermore, the .keys and .values properties create new arrays, which is wasteful.

Another issue with associative arrays is that ++a[k] is hacked, which reflects a grave language limitation. That needs to be replaced with a true facility.

Any other issues with AAs that you want to see fixed, and ideas guiding a redesign?

Do not require opCmp for AAs. There are some good hashmap implementations do not require using a tree for collisions. This would also eliminate at least one pointer in the element struct.

It also causes some problems with using arbitrary classes as keys. It is easy to define a default hash and default opEquals for a class, but it is difficult to define a default opCmp. In fact, the default opCmp in object simply throws an exception, making it a nuisance to have the compiler allow using a class as a key, and then throwing an exception at runtime when you use it.

Removing the requirement for opCmp would also eliminate the requirement for opCmp to be in object (it currently by default throws an exception), so it could be in an interface instead.

-Steve

Reply via email to