To help LDC/GDC

Jacob Carlborg doob at me.com
Mon Apr 8 11:56:45 PDT 2013


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


More information about the Digitalmars-d mailing list