He Dean, > I've "proved" that a let statement's result is visible ANYWHERE within it's > bounding parens but not outside of them and....
That's right. However, the term "a let statement's result" means something different. (let A 3 (* A 4) ) This 'let' statement has the *result* 12. The symbol 'A' is *bound" to the result of evaluating the expression '3'. And this binding is valid throughout the body of the 'let'. > I was hoping to define the scope of X locally by wrapping the lot with > (let X some_dummy_value 'let' does not define the scope of 'X'. 'X' is an internal symbol which has always global scope ("scope" means "visibility"). What 'let' does is to set up the binding, which means saving the current value, assigning a new one, and restoring the old value when the 'let' is done. > but binding X to some dummy value casts that value in stone...invalidating This is not true. The value can be changed (let A 3 (setq A (inc (* A 4))) ... A ) This should return 13. Note that 'let' is just a shorthand for 'use' + 'setq': (let A 3 ... is the same as (use A (setq A 3) ... ♪♫ Alex -- UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe