On Friday, 24 April 2015 at 20:55:02 UTC, Steven Schveighoffer
wrote:
But I can check memory usage size and see global state has been
altered.
OK, if you want to play that game, don't access memory ever, that
is global state. I mean, even if the memory is read only you may
end up affecting the MMU, so that is definitively a no go. Also,
you'd better have only a one instruction loop in your program as
otherwise you'll affect the program counter, a definitively
visible state from the user.
When you free, you potentially alter references anywhere
outside your
"pure" function. It must not be pure.
When you do ANYTHING to mutable data, you potentially alter
references outside your pure function. This is not a
disqualifier. It's accessing global sate directly that wasn't
passed to you that is a disqualifier.
-Steve
pure function can access global immutable state that wasn't
passed to it, so you may want to revise your definition.