On 11/06/2011 08:27 PM, Tanner Swett wrote: > On Sun, Nov 6, 2011 at 8:41 PM, Pavitra <celestialcognit...@gmail.com> wrote: >>> I cash promise S, specifying promise I. Call the resulting promise C. >> This submits a second copy of S, and assigns C as a synonym for S. >> (Note that promises with the same text, author, and conditions are >> fungible.) > > That's what would happen if I cashed I, specifying S. I'm quite sure > that if I cash S, specifying I, something else is produced.
Right, let's try this again. > I submit the following promise, which will be called S: > {{S > I submit the following promise, where X is the promise specified: > {{C > I submit the following promise, where Y is the promise specified: > {{D > I submit the following promise, where Z is the promise > specified: > {{E > I cash promise X, specifying promise Z. > Call the resulting promise A. > > I cash promise Y, specifying promise Z. > Call the resulting promise B. > > I cash promise A, specifying promise B. > > (This promise is not destroyed when cashed.) > }}E > > (This promise is not destroyed when cashed.) > }}D > > (This promise is not destroyed when cashed. > }}C > > (This promise is not destroyed when cashed. > }}S S created. > "cash I specifying Q" means "cash Q". This doesn't change. > I cash promise S, specifying promise I. Call the resulting promise C. C created, X=I. > I cash promise C, specifying promise I. Call the resulting promise D. D created, X=I Y=I. > I cash promise D, specifying promise D. Call the resulting promise E_1. E_1 created, X=I Y=I Z=D. >>> I cash promise D, specifying promise D. >> One copy of a new promise is submitted; following the existing naming >> scheme, I call it E. X=I and Y=D. > > Promise D is supposed to cash the promise specified, specifying > itself. Thus, cashing D specifying D is an infinite loop. Promise D reads "I submit the following promise, where Z is the promise ^^^^^^ specified: {{E(X=I, Y=I)}} (This promise is not destroyed when cashed.)" However, let us suppose that you cash E, which does not require context. With the current variable settings, this gives us: > {{E_1 > I cash promise I, specifying promise D. > Call the resulting promise A. D is cashed, but Z is unbound. This creates A=E_2(X=I, Y=I, Z=null). > I cash promise I, specifying promise D. > Call the resulting promise B. This creates a second (fungible) copy of E_2 and assigns B as an additional synonym. > I cash promise A, specifying promise B. As A is an E-class promise, it takes no context-upon-cashing; thus, "specifying promise B" has no effect. Results of cashing E_2 follow below. > > (This promise is not destroyed when cashed.) > }}E_1 Results of cashing E_2: > {{E_2 > I cash promise I, specifying promise (null). > Call the resulting promise A. No promise is specified to I, so the text of I fizzles. A=null. > > I cash promise I, specifying promise (null). > Call the resulting promise B. Likewise B=null. > > I cash promise A, specifying promise B. No effect. > > (This promise is not destroyed when cashed.) > }}E_2