On 2009-08-09 16:29:21 -0400, Walter Bright <[email protected]> said:

D has a number of subtle problems (performance and semantic) that arise when arrays are resized. The solution is to separate resizeable array types from slices. Slices will retain the old:

    T[] slice;

syntax. Resizeable arrays will be declared as:

    T[new] array;

The new expression:

    new T[10]

will return a T[new].

I have nothing against the concept of container, but I dislike like the syntax. Is this really better than Array!T ?


T[new] will implicitly convert to T[], but not the other way.

slice.length will become read-only.

All fine by me.


Doing this change will:

1. fix many nasties at the edges of array semantics

Unfortunatly, not all. Solving them all could be done with unique semantics (unique slices can be expanded with no side effect).


2. make arrays implementable on .net

3. make clear in function signatures if the function can resize the array or not

Unique and ref unique slices would be perfectly fine for that (assuming slices can be resized when unique).

But I know, unique isn't easy to implement to fit all the use cases we'd like to solve. I'm just sharing a dream.


--
Michel Fortin
[email protected]
http://michelf.com/

Reply via email to