If T[new] is the container for T[], then what is the container for T[U]?

Robert Jacques sandford at jhu.edu
Sat Apr 25 12:08:38 PDT 2009


On Sat, 25 Apr 2009 14:21:49 -0400, Unknown W. Brackets  
<unknown at simplemachines.org> wrote:
> I'm not talking about invariant(char)[], I'm talking about  
> invariant(char[]).  That cannot be extended in length.  Really, what I  
> want is something that is a "invariant(variant(char)[])", I suppose, but  
> I don't even think that's necessary.
>
> When the default string type was made invariant, many people were  
> non-plussed at best.  That doesn't mean it was wrong.

Okay I think we're on different pages, so I'll reiterate:
> Robert Jacques wrote:
>>  No, immutability really applies to the element and not just the array  
>> length.

1) Immutability is a bad way to express 'this array doesn't change  
length'. Consider arrays of numbers instead of characters and you'll see  
what I mean.
2) A large portion of the time immutable arrays are concatenated (i.e.  
"hello" ~ "world")

> How crazy would it be if, for example, std.string.split returned  
> invariant(string[]) instead of string[]?  I doubt it would hurt many  
> people, in actuality, and you could always get a mutable copy.
>
> -[Unknown]

1) At first glance, I don't see any reason why split couldn't or  
shouldn't, besides string[] being shorter than immutable string[].
2) I don't see how this is relevant to array capacities / builders.



More information about the Digitalmars-d mailing list