Thank you for the writeup; interesting. Just one point of motivation that perhaps I missed from the original post:
On Mon, Dec 7, 2009 at 11:17 PM, David-Sarah Hopwood <[email protected]> wrote: > To dodge this issue, let's provisionally call a function *instance* > "copacetic" [*] if: > - that instance has only captured copacetic values, and > - it has no side effects and is deterministic whenever it is > only called with copacetic argument values, and > - it uses no side-effecting or nondeterministic primitives. I'm getting at something similar but distinct, call it "i-copacetic". :) Specifically: - it has no side effects on its lexical environment regardless of its argument values The motivation is this: An object's state is managed by some surrounding system. However, it is allowed to expose "read()" services to the outside world that do not participate in this state management. Each "read()" service may side-effect the supplied arguments, but it must not side-effect the lexical environment of the service (i.e., the object itself). Ihab -- Ihab A.B. Awad, Palo Alto, CA
