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

Reply via email to