On 2013-04-08 20:14, Simen Kjaeraas wrote:
Like others have stated, it's so you can do this:struct Foo { int a = 0; pure int bar( int n ) { // Weakly pure a += n; return a; } } pure int Baz( int n ) { // Strongly pure Foo foo; return foo.bar( n ); } Foo.bar has only local mutability, so if the Foo originated in a (strongly) pure function, Foo.bar can be called inside that pure function without violating the purity requirement. The three levels (weakly pure/strongly pure/impure) are needed, but a redesign would perhaps use a different keyword for weakly pure.
I see. -- /Jacob Carlborg
