# Lexical Scope RETRO has a single dictionary, but does provide a means of using lexical scope to keep this dictionary clean. ## Example ``` {{ 'A var :++A &A v:inc ; ---reveal--- :B ++A ++A @A n:put nl ; }} ``` In this example, the lexical namespace is created with `{{`. A variable (`A`) and word (`++A`) are defined. Then a marker is set with `---reveal---`. Another word (`B`) is defined, and the lexical area is closed with `}}`. The headers between `{{` and `---reveal---` are then hidden from the dictionary, leaving only the headers between `---reveal---` and `}}` exposed. If you wish to hide all headers in a `{{` ... `}}` block, leave out the `---reveal---`. ``` {{ :a #3 ; :b a dup * ; }} ``` ## Notes This only affects word visibility within the scoped area. As an example: ``` :a #1 ; {{ :a #2 ; ---reveal--- :b 'a s:evaluate n:put ; }} ``` In this, after `}}` closes the area, the `:a #2 ;` is hidden and the `s:evaluate` will find the `:a #1 ;` when `b` is run. ## A Word of Warning Use of these words can result in a corrupt dictionary and system crashes. Specifically, use of `---reveal---` with an empty private or public section will result in dictionary corruption. If you don't need private words, don't put them in a scope. And if you don't need public words, don't include the `---reveal---`.