The demise of T[new]

grauzone none at example.net
Mon Oct 19 19:22:49 PDT 2009


Andrei Alexandrescu wrote:
> grauzone wrote:
>> Andrei Alexandrescu wrote:
>>> Don wrote:
>>>> Walter Bright wrote:
>>>>> The purpose of T[new] was to solve the problems T[] had with 
>>>>> passing T[] to a function and then the function resizes the T[]. 
>>>>> What happens with the original?
>>>>>
>>>>> The solution we came up with was to create a third array type, 
>>>>> T[new], which was a reference type.
>>>>>
>>>>> Andrei had the idea that T[new] could be dispensed with by making a 
>>>>> "builder" library type to handle creating arrays by doing things 
>>>>> like appending, and then delivering a finished T[] type. This is 
>>>>> similar to what std.outbuffer and std.array.Appender do, they just 
>>>>> need a bit of refining.
>>>>>
>>>>> The .length property of T[] would then become an rvalue only, not 
>>>>> an lvalue, and ~= would no longer be allowed for T[].
>>>>>
>>>>> We both feel that this would simplify D, make it more flexible, and 
>>>>> remove some awkward corner cases like the inability to say a.length++.
>>>>>
>>>>> What do you think?
>>>>
>>>> Since noone else seems to have said it: The fact that you're both 
>>>> willing to let it go, after having already invested a lot of time in 
>>>> it, is a good sign for the language. Well done.
>>>
>>> I'm relieved that somebody mentioned that :o). As soon as we gave up 
>>> with T[new], people started to sell it to us. We should preemptively 
>>> post about eliminating feature plans before actually implementing them.
>>>
>>> By the way: implementation of @property has been canceled.
>>
>> Yeah, let's just keep the language in the broken state it is, because 
>> we can't think of a better solution.
> 
> Silly me, I was thinking the humor was all too obvious.

It was only a joke? That's a relief.

> Andrei



More information about the Digitalmars-d mailing list