thoughts on immutability in D

Rainer Schuetze r.sagitario at gmx.de
Sat Sep 24 01:46:07 PDT 2011



On 9/24/2011 9:30 AM, Andrei Alexandrescu wrote:
> On 9/24/11 1:12 CDT, Rainer Schuetze wrote:
>>
>> On 9/22/2011 4:10 PM, Andrei Alexandrescu wrote:
>>> On 9/22/11 3:02 AM, Peter Alexander wrote:
>>>> On 22/09/11 7:04 AM, Andrei Alexandrescu wrote:
>>>>> The initial submission got junked so I resubmitted:
>>>>>
>>>>> http://www.reddit.com/r/programming/comments/knn5p/thoughts_on_immutability_in_d/
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Andrei
>>>>
>>>> Thanks for the reddit'ing. I launched up google analytics this morning
>>>> and noticed a sudden spike. That could only mean one thing :-)
>>>>
>>>> Out of interest, does anyone have any criticism of my post, esp. if
>>>> there's any technical inaccuracies (or just disagreement?)
>>>
>>> You could have specified that e.g. mutable state can be implemented
>>> safely with the help of a global hash table.
>>>
>>> Andrei
>>
>> If this is allowed by the compiler, doesn't that break all the
>> guarantees transitive immutability tries to make? Aren't we back to
>> "faith based programming" this way?
>
> Not at all. Global mutable memory is what it is to everyone.
>
> Andrei

I'm probably missing something, but what are the guarantees given by the 
type system, if a property is implemented by a getter function:

int globId;

class C
{
	@property id() const { return ++globId; }
}

int main()
{
	immutable(C) c = new immutable(C);
	return c.id;
}

Is c.id thread-safe? no! Is it constant? no! How does this help in 
multi-threaded applications that access c?


More information about the Digitalmars-d mailing list