dynamic arrays of immutable question: Are the elements actually mutable

monarch_dodra monarchdodra at gmail.com
Wed Jan 9 10:04:40 PST 2013


On Wednesday, 9 January 2013 at 17:22:25 UTC, ollie wrote:
> My question is about immutable and casting in general.  I've 
> heard Walter
> say of immutable, "Turtles all the way down.".  If say I have a 
> plug-in
> system with a defined interface and I pass it an immutable 
> array (ie
> immutable(int)[]) then it uses a cast to mutate, that seems to 
> defeat the
> purpose of immutable.  When the plug-in returns, I now have an 
> immutable
> array that has been mutated.  Is this how immutable and casting 
> are
> supposed to work?

Seems you are raising two different issues:

"Turtles all the way down" means the immutability is transitive.

For example, an "immutable(int*)" means both the pointer AND
pointee are immutable. This is in contrast to C++, where you can
have a const pointer to non const data. This is impossible in D.

As for the cast question: Casting is a means to do *anything* you
want, no guarantees. If you want to do something illegal, there's
no one left to stop you. Not really any different from C++
actually.


More information about the Digitalmars-d-learn mailing list