On Wednesday, 26 December 2012 at 22:09:26 UTC, Walter Bright
wrote:
But D also does something I think is fairly unique. A function
can be pure, but inside that function, mutation is allowed as
long as that mutation does not "leak" outside of the function.
A pure function with immutable parameters does completely
specify the function in its signature. What happens inside the
function is not relevant, it is not necessary that locals be
immutable.
Rust can also do this. Apparently there were (are?) plans to
allow pure functions that call impure delegates, as long as the
delegate has been provided by the caller, but I'm not sure if
they implemented that yet (or perhaps they've ditched the idea
entirely).