about const and immutable (again)

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon Oct 10 18:29:08 PDT 2011


On 10/10/11 5:55 PM, Don wrote:
> On 06.10.2011 20:56, Steven Schveighoffer wrote:
>> On Thu, 06 Oct 2011 12:27:16 -0400, Gor Gyolchanyan
>> <gor.f.gyolchanyan at gmail.com> wrote:
>>
>>> I see. Thanks for the detailed answer.
>>
>> I should clarify one point, I realized I am somewhat inaccurate on the
>> reason the type is set to immutable(dchar). In fact, nobody actually
>> wrote the immutable(dchar) function, it's just that the element type is
>> immutable(dchar). However, the reasons why someone would want to create
>> a function that takes an immutable(dchar) function are as I stated -- so
>> you don't accidentally change the value.
>
> That seems like the discussed-and-discarded 'final' storage class for
> parameters. But this is worse. It has an *enormous* cost.

Walter and I have agreed for a long time that upon function calls with 
by-value passing, there should be some simple transforms done:

1. If a parameter has no indirections, qual(T) becomes T.

2. qual(T[]) becomes qual(T)[].

3. qual(T*) becomes qual(T)*.

This would improve many aspects of the language. Walter never got to 
implementing it, but I'm bringing this up in case one of the wonderful 
compiler contributors would want to take it up. Again, I have reasons to 
believe Walter would approve of the change.


Thanks,

Andrei


More information about the Digitalmars-d mailing list