[REBOL] On USE [was Re: WYSIWYG programming]
From: joel:neely:fedex at: 30-Oct-2000 8:12
[rebol-bounce--rebol--com] 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! ;-)