On Tuesday, 9 April 2013 at 08:33:53 UTC, Manu wrote:
How can 'weak pure' reasonably be called any kind of 'pure'?
It's not pure
at all. The function returns a completely different result when
called
twice. That's the definition of not-pure.
I suggest that no D language newbie would ever reasonably
expect that
behaviour.
It is "weak pure" because it can be called by "strong pure"
functions without violating "strong pure" guarantees
(not-pure-at-all functions can't). It is confusing indeed and I
remember some questions on StackOverflow on topic. I think having
separate keywords/attributes would have helped.