* 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