2 ms·
Most imperative languages have an intermediate language in which local variables are immutable. However, purity is about more than immutability. For example, in
by tathougies 9y ago
Most imperative languages have an intermediate language in which local variables are immutable. However, purity is about more than immutability. For example, in C++
x = doSomething(x) + 1
Can be written to not overwrite x
int x2 = doSomething(x) + 1
This is equivalent in some ways to Haskell
let x' = doSomething x + 1
However, I know that in Haskell, evaluating 'doSomething x' will not turn off the computer, display anything to the user, or launch missiles. I have no idea what evaluating 'doSomething(x)' does in C++. It may add things to caches, exit the program, etc.