On Friday, 16 December 2011 at 16:35:27 UTC, Jonathan M Davis wrote:
That would break purity, so no that doesn't work. The singletons are pure.

I'm tempted to say just cast it away, since you aren't actually
breaking purity in any meaningful way; the return value is always
the same and it should have no other side effects (except on the
internal variable).


Lying around pure was a bit of a pain... but this seems to have
done the trick:

alias pure string function () hax;

private string impureConstructor() {
       static string cache;
       if(cache is null)
               cache = "lol pure defeated";
       return cache;
}

private pure hax getPureConstructor() { return cast(hax) &impureConstructor; }

public @system @property pure string test() {
       return getPureConstructor()();
}


// test now works

Reply via email to