On Monday, 17 November 2025 at 14:46:06 UTC, Brother Bill wrote:
Pure functions in Functional Programming provide the same
result when provided the same arguments.
They are not allowed to read or write to system resources such
as file system, console, clock, network, etc. In addition,
they may not read/write to module level variables.
In D, they are allowed to mutate parameters which seems to
violate purity. Why did D make this choice and when to best
exploit this architectural decision.
Also, would you agree that not mutating parameters to have
"true" purity would be preferred?
It's been this way the entire time I've been using D (since
2013). I've always found it weird to misuse a standard
programming language term like this, and as a result I've never
used it. The spec distinguishes weak and strong purity in a way
that complexifies things without benefit, but it's not going to
change: https://dlang.org/spec/function.html#weak-purity