Hi Carl

> So you're saying that in a case like this...
>
> func1: has [a b c][some code or other]
> func2: has [a b c][some other code]
>
> there's only ever a single instance of 'a 'b and 'c in existance at
> any one time?  Does that also apply if 'func2 calls 'func1?

There are many instances of 'a 'b 'c around, but the limit is only about the
number of different words in the global context, the object! pointed by
system/words.

But "These words are locals", one can say!

Correct, but every time the system loads some new code, the sistem by default
add all its word to the global context.
If a word is already in the global context, it is not added.
Only when the code is executed the words of your code become local.

>> print length? first system/words
2509
>> use [foo][]
>> print length? first system/words
2510
; foo  is added to the global context
>> use [foo][]
>> print length? first system/words
2510
; foo  is already in the global context and is not added
>> func [foo][foo: 2]
>> print length? first system/words
2510
;foo  is already in the global context and is not added

It is Load and the implicit Load at Console and Do level, which add new words
to the global context.
I do not know why Rebol make this, I find it unuseful at all.

There is a workaround, but a bug in get and set makes its use very limited.
You can find an example at my rebsite:

 http://web.tiscali.it/anarkick/gcmask.r

If RT corrects the bugs, we could write all the code without adding a single
word to the global context.

To end, when searching the name for a new word one can check this list to find
a word to re-use:

request-list "global words" sort first system/words

---
Ciao
Romano


-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to