On Sat, 18 Dec 2010 01:08:20 -0800 Jonathan M Davis <[email protected]> wrote:
Thank you for the explanation about strongly pure funcs calling weakly pure ones --this fully makes sense. > > I would like weakly pure to include output funcs, and exclude all > > possibilities to modify (non-local) state. > > The problem is that output is accessing global variables - which weakly pure > functions _cannot_ do. Why? What is the rationale for excluding output (I don't mean I/O, only O)? > If you call a weakly pure function from a strongly pure > function, it's still guranteed that the result of the strongly pure function > will be the same and have _no_ side effects - that is, it effectively has the > functional definition of purity. However, if you allowed I/O, you then have a > side effect, and two calls to a particular strongly pure function could > differ, > and yet the optimizer would then only do one call, thereby changing the > results > of the program. I disagree. Again, I'm not talking of I/O. The FP definition of "pure" excluding output is irrational imo. Writing to output cannot change later function return values, so who cares? And it's not only true for debug --even if I very much agree debug is a super important reason for allowing output. Denis -- -- -- -- -- -- -- vit esse estrany ☣ spir.wikidot.com
