Re: (declare (pure ...))

Al <[email protected]>
Newsgroups gmane.lisp.scheme.chicken
Message-ID <[email protected]>
>> * 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.