- File doc/Hyperstatic.md — part of check-in [0b0cd20ed6] at 2018-05-07 16:39:49 on branch trunk — rename references to old names in doc (user: crc size: 870)
Hyperstatic Global Environment
This now brings up an interesting subpoint. Retro provides a hyper- static global environment. This can be difficult to explain, so let's take a quick look at how it works:
#1000 'a var<n> :scale (x-y) @a * ; #3 scale n:put >>> 3000 #100 !a #3 scale n:put >>> 300 #5 'a var<n> #3 scale n:put >>> 300 @a n:put >>> 5
Output is marked with >>>.
Note that we create two variables with the same name (a). The definition
scale still refers to the old variable, even though we can no longer
directly manipulate it.
In a hyper-static global environment, functions continue to refer to the variables and earlier functions that existed when they were defined. If you create a new variable or function with the same name as an existing one, it only affects future code.