This doesn't make any sense at all.
If in order to be truly "pure", why don't we just replace our code with nothing but a bunch of constants?
We could then go around saying I write constants instead of I write code.
I don't understand the thinking that in order to be truly pure, it has to return the same value. Why can't it be pure if it returns the data type specified? I.e., if I say I'm goign to pass you back a string, then you can know for a fact you are going
to get a string returned.
Why do we care what the actual value is?
Why would it make sense to have to specify not only the data type returned, but also that it's not a constant value by plaing <IO> in front of it?
Also, what's up with the Let? Why can't we just say x = "whatever"
I think it would be better if you show a sample application, where this type of functional programming language shines.
When we don't want our "world" to change, why doesn't it make more sense to use the concept of Interfaces when needed?
I think the problem with the concept of purity and functional programming, is that it's trying to force programmers into a box of how mathmeticians think. That logic falls apart because the need for a programming language is not simply to solve mathmetical
equations.
To step back and keep it simple, rather than talking about how it works;
What problems does it solve?
How does it make programming or the end-result better?