{{
Actually, nothing happens when entering or exiting the functions.
The binding is done when they are created. That is, make function!
creates a new context based on the spec, and then binds the body
block to that context.
}}
Which also neatly explains why local values are persistent. They are
(apparently) intialized to none when the block is made, and continue
through the session. It's only our prior knowledge of other languages
that lead us think locals might wax and wane whenever a function is
evaluated.
{{
Because 'c actually exists in the global context, and its value is
unset!. Look:
>> c
** Script Error: c has no value.
** Where: c
>> type? get/any 'c
== unset!
}}
Since this works as the first statement in a new session, I guess that,
theoretically, this would mean all words exist, but are initially
'unset.
-Ted.