Should we remove int[$] before 2.067?

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Fri Jan 30 10:15:56 PST 2015


On 1/30/15 9:01 AM, Kenji Hara via Digitalmars-d wrote:
> 2015-01-31 1:53 GMT+09:00 Nick Treleaven via Digitalmars-d
> <digitalmars-d at puremagic.com <mailto:digitalmars-d at puremagic.com>>:
>
>     This version of staticArray allows the user to (optionally) specify
>     the element type.
>
>
> How the API can replace following declaration with ?
>
> auto[$][][$] = [
>      [[1,2]],
>      [[3,4], [5,6]],
>      [[7,8], [9,10], [11,12]],
> ];

This is interesting, and something we might get behind if it has general 
power. I'll note that partial deduction with "auto" is done in C++ and 
occasionally useful.

We should definitely support "const[] a1 = [1, 2, 3];" regardless of the 
general decision about [$].

Where I have more difficulty is understanding how e.g. matching may help 
in a function call context, or how it generalizes beyond inferring sizes 
for statically-sized arrays (which I'd say is a rather dull category of 
cases).

One other aspect is the more complex the array shape, the more awkward 
it becomes with library functions; however, the frequency of use or even 
necessity also decrease correspondingly.

One extra note - the original feature request 
https://issues.dlang.org/show_bug.cgi?id=481 was made in November 2006. 
At that time, common library artifacts such as CommonType did not exist 
and were at most a dream of the future; with what we have now doing 
everything needed takes a couple of lines. It looks like we've lost 
perspective.

Walter and I don't feel all too strongly about this so we wanted to 
gauge good signal from the dlang brass. We have a few roads from here:

1. Convince ourselves that [$] has current and future benefits that are 
larger than what library code can ensure reasonably, and do nothing - 
i.e. keep the feature starting with 2.067.

2. Release the feature but consider it experimental; don't document it, 
or mention it may be removed in future releases.

3. Release the feature and make it opt-in via a DIP (-dip=xxx) that 
would motivate it properly.

4. Undo the pull request at least for now, and get to the design table 
to make sure it's worth the added cost.

One road I want explicitly not taken is:

5. This feature is the first of a cornucopia of custom annotations for 
various related cases.

I am particularly worried by the near-instant use of this feature as a 
precedent for proposing more similar ones. We must stop that.


Andrei



More information about the Digitalmars-d mailing list