www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Why is this pure?

reply "Shachar" <shachar shemesh.biz> writes:
The following program compiles, and does what you'd expect:

struct A {
     int a;
}

pure int func( ref A a )
{
     return a.a += 3;
}

As far as I can tell, however, it shouldn't. I don't see how or 
why func can possibly be considered pure, as it changes a state 
external to the function.

What am I missing? Or is this just a compiler bug?

Shachar
Aug 24 2014
parent "Alex =?UTF-8?B?UsO4bm5l?= Petersen" <alex alexrp.com> writes:
On Monday, 25 August 2014 at 06:27:00 UTC, Shachar wrote:
 The following program compiles, and does what you'd expect:

 struct A {
     int a;
 }

 pure int func( ref A a )
 {
     return a.a += 3;
 }

 As far as I can tell, however, it shouldn't. I don't see how or 
 why func can possibly be considered pure, as it changes a state 
 external to the function.

 What am I missing? Or is this just a compiler bug?

 Shachar
http://klickverbot.at/blog/2012/05/purity-in-d/
Aug 24 2014