dsimcha wrote:
== Quote from Andrei Alexandrescu (seewebsiteforem...@erdani.org)'s article
dsimcha wrote:
== Quote from Frits van Bommel (fvbom...@remwovexcapss.nl)'s article
Steven Schveighoffer wrote:
Yet another reason to get rid of built-in .sort; a templated function would have
no problem with this :).
Yes, and with my proposal (not exclusively mine, it's been suggested by plenty 
of
other people) of importing some very basic, universally used functionality
automatically in Object so it can "feel" builtin, getting rid of builtin sort
wouldn't even make code *look* any different.
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.
Andrei

Yes, but then we lose niceties like AA literals and good declaration syntax.

Sorry, I meant to include literals too. What I'm saying is that built-in AAs should essentially be a very thin wrapper over a genuine D type. That means only the syntax of the type and the syntax of literals should be built-in - everything else should use the exact same amenities as any user-defined type.

What
would be gained by moving stuff into Object compared to improving the
implementation within the existing paradigm?  On the other hand, the current
implementation *could* use some improvement.  (In a few minutes when it's 
written,
see post on AA implementation.  I've been meaning to post this for a while.)

Current AAs look awful. They're all casts and bear claws and cave paintings. I tried two times to get into them, and abandoned them for lack of time. (I wanted to add an iterator for keys. It's virtually impossible.) Also, they don't use the normal operator syntax etc. The compiler elaborately transforms expressions into calls to AA functions.

Also, AAs use dynamic type info which makes them inherently slower. Oh, and iteration uses opApplyImSlowLikeMolassesUphillOnAColdDay.

To me it is painfully obvious that there should be as little magic as possible for elaborate types. Literals and simple type syntax are useful. Keep those, but stop there and let actual code take off from there. It's just the right way, again, to me that's so obvious I don't know how to explain.


Andrei

Reply via email to