Immutability by default [was: Re: Tidy auto [Was: Re: @disable]]

Steven Schveighoffer schveiguy at yahoo.com
Mon Jan 18 13:01:15 PST 2010


On Mon, 18 Jan 2010 15:35:17 -0500, dsimcha <dsimcha at yahoo.com> wrote:

> == Quote from Walter Bright (newshound1 at digitalmars.com)'s article
>> Leandro Lucarella wrote:
>> > Do you remember when people asked for default immutability? I do :)
>> Yes, but it would break every other line of code already written in D.
>> > I like the idea of making x := y an alias for immutable x = y (or even
>> > enum x = y). That would make this style much more attractive without
>> > breaking backward compatibility as immutable-by-default would do.
>> Actually,
>>      const x = y;
>> is better than immutable, because if y is a T*, it cannot be implicitly
>> converted to immutable, while it can be implicitly converted to const.
>
> Refresh my memory, is there any difference whatsoever between const and  
> immutable
> for pure value types (int, float, char, etc.), including in terms of the  
> compiler
> optimizations they allow?  As far as I can tell, the difference only  
> comes into
> existence when there's indirection involved.

For pure value types (including structs with only pure value types in  
them), no there is no difference.  That is why such value types are  
implicitly convertable to/from mutable, const and immutable because you  
always make a complete copy on assignment.

-Steve



More information about the Digitalmars-d mailing list