Extended Type Design.

Andrei Alexandrescu (See Website For Email) SeeWebsiteForEmail at erdani.org
Fri Mar 16 10:44:45 PDT 2007


Don Clugston wrote:
> My problem is, I don't see any connection between "don't touch" and 
> "constant" except that C++ got them confused. In every other other 
> context outside of C++,  "constant" means "it will not change".
> 
> Mathematically, you can "hold something constant" (even though it is 
> actually a variable), but as long as it is being held constant, it can't 
> change.
> 
> Suppose in a function, you have 'const' access to a global variable.
> Another thread with write-access to that variable can change it, while 
> the function is executing.
> 
> It makes sense for a function to have read-only access to a variable, 
> and need to obtain a mutex when it wants to obtain the current value.
> But that's not a constant in any reasonable sense of the word.

The difference between math and computer memory is that all too often in 
the latter case you want to express modular separation very often. 
Modular separation (in this context) means that the right to modify a 
certain object is owned by some part of program, and other parts may be 
offered only a view of that memory. This is such an important concept, 
even C adopted it. All of C's library functions that take pointers are 
anontated in their signature to specify whether or not they modify their 
input or not.

You want to enforce modular mutability cheaply. If D's immutability 
features fail to achieve that, we've done nothing.


Andrei



More information about the Digitalmars-d mailing list