* only side-effect free, or ...

* also return the same value when called with the same arguments?

The first implies the second: to be able to choose from a set of return values for the same given argument, you do need to have side-effects, e.g., interact with a RNG which maintains state, read from a file, maintain an index into a circular vector of results, etc..

Here's what the docs say:
http://wiki.call-cc.org/man/5/Declarations#pure

"referentially transparent, that is, as not having any side effects". You can read "the environment" (including all globals) without actually modifying the environment. Between two applications of the procedure, other impure procedures may modify the environment. So it's not clear if it means Haskell monad purity or immutable purity, hence my question.


Furthermore, https://wiki.call-cc.org/man/5/Types#purity says: "Using the (... --> ...) syntax, you can declare a procedure to not modify local state, i.e. not causing any side-effects on local variables or data contained in local variables".


-- Al


Reply via email to