On 04/09/2013 12:13 PM, Artur Skawina wrote:
...
D's pure is horribly misnamed; nobody that's not already aware of the
D re-definition expects "pure" to mean what it currently does.

    struct S {
       int* p;
       int f() pure @safe nothrow { return ++*p; }
    }

    int i = 1;

    int main() {
       auto s = S(&i);
       assert(i==1);
       auto r = s.f();
       assert(r==2);
       r = s.f();
       assert(r==3);
       assert(i==3);
       return r;
    }

That's not pure by any definition,

I'd counter that it is pure by the D definition.

Reply via email to