On Sat, 20 Aug 2011 12:43:29 -0400, Timon Gehr <timon.g...@gmx.ch> wrote:

On 08/20/2011 06:24 PM, Sean Eskapp wrote:
== Quote from David Nadlinger (s...@klickverbot.at)'s article
On 8/20/11 5:13 PM, Sean Eskapp wrote:
Does marking a member function as pure mean that it will return the same result given the same parameters, or that it will give the same result, given
the same parameters and given the same class/struct members?
The second one, the implicit this parameter is just considered a normal
argument as far as purity is concerned.
David

Wait, references and pointers are now valid for pure function arguments?

There are different forms of pure functions:

weakly pure:
no mutable globals are read or written. the function may however change its arguments. weakly pure functions are useful mainly for the implementation of functions with stronger purity guarantees.

I have to just interject real quick: One aspect of pure functions that usually is forgotten (probably because it's seldom used) is that pure functions are not allowed to accept or return shared data.

In other words:

pure int foo(ref shared(int) i); // compiler error.

I think even without the ref, it's a compiler error, although I don't see what the point of a shared non-reference type is...

Other than that, you got everything right.

-Steve

Reply via email to