Re: [Caja] Functional auditor for Cajita
"Mark S. Miller" <[email protected]>
| Newsgroups | gmane.comp.lang.e.general |
|---|---|
| Message-ID | <[email protected]> |
On Tue, Dec 8, 2009 at 8:47 AM, <[email protected]> wrote: > 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). How is this different from E's DeepFrozen or Joe-E's Immutable? > > Ihab > > -- > Ihab A.B. Awad, Palo Alto, CA > -- Cheers, --MarkM