On Thu, 16 Jun 2011 14:33:17 -0400, Jonathan M Davis <jmdavisp...@gmx.com> wrote:

On 2011-06-16 10:38, Charles McAnany wrote:
Ok, I think I get it. That cleared it up. =).
So, if you have a functioned labelled pure, it's your job to not pass it
mutable arguments, but the compiler's job to make sure it doesn't mutate
anything not in the arguments. And that's why a strongly pure function can
call a weakly pure one - only the first function's internal state can be
mutated by a weakly pure function. Thanks!

Well, essentially. But it's a question of parameters, not arguments. It
doesn't matter whether you pass the function mutable arguments or not.

Actually, it can matter.  For instance, a pure function like this:

pure int foo(const(int)* m);

can be strong pure if you pass it a pointer to immutable data.

-Steve

Reply via email to