Why do we have transitive const, again?

Jesse Phillips jessekphillips+d at gmail.com
Wed Sep 21 20:21:09 PDT 2011


On Wed, 21 Sep 2011 10:15:31 -0700, Mehrdad wrote:

> I can't find the thread, but I remember someone (bearophile?) mentioned
> that the reason we have transitive const is to support purity.
> 
> I don't think I understand why this is necessary, though -- could
> someone please explain why we have transitive const, and what problems
> it fixes?
> 
> Thanks!

I came across this blog earlier, it may hold the answers you seek:

http://www.reddit.com/tb/kkwch

"One of the core difficulties in concurrent programming is trying to 
avoid the simultaneous reading and writing of data. Like with functional 
programming, concurrent programming is a lot easier when data can't 
change -- if you have no writes then you can't possibly have 
simultaneously reading and writing. However, unlike functional 
programming, logical const just doesn't cut it. If you were to give a 
reference to an instance of my Matrix class to two threads, and ask them 
both to compute the determinant then you could end up with an ugly race 
condition due to the memory writes in the caching mechanism. Here, 
physical immutability really does matter."


More information about the Digitalmars-d mailing list