[EMAIL PROTECTED] wrote:

>   Well, the definition of contexts is context dependent. :)
> 
>   I have an operative definition of contexts that works for
>   me: "where a word is looked up"

Such a short statement is either too obvious or too cryptic to be
useful.  What's needed are clear statements of when contexts are
created, what statements cause such creation, and what contexts
are used in "interesting" circumstances.  For example:

Asking REBOL to DO a string gets a different result from asking
REBOL to convert a string to a block and the DO the block.
The first seems to use the global context, while the second does
something (?) else.  However, if the string is explicitly LOADed
(either with *or* without being converted to a block) the global
context seems to be used.

    >> x: "global"                    == "global"
    >> do "print x"                   ;-> global
    >> do to-string "print x"         ;-> global
    >> do to-block "print x"
    ** Script Error: print is not defined in this context.
    ** Where: print x
    >> do load "print x"              ;-> global
    >> do load to-block "print x"     ;-> global

    do func [s x] [
        x: "local"
        if error? try [do               s] [print "***error***"]
        if error? try [do      to-block s] [print "***error***"]
        if error? try [do load          s] [print "***error***"]
        if error? try [do load to-block s] [print "***error***"]
    ] "print x" "ignored"

    global
    ***error***
    global
    global
    == none

So... HOW do we determine, under all circumstances, "where a word
is looked up"?

-jn-

----
(Not meaning to be rude, just trying to be compact! ;-)
-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to