[racket] #%top and hopeless toplevel stuff

From: Jay McCarthy (jay.mccarthy at gmail.com)
Date: Wed Aug 25 20:00:30 EDT 2010

Just an idea, every REPL interaction sexp is wrapped in
#%top-interaction, that could be how it communicates to set!, but I
don't really know.


On Wed, Aug 25, 2010 at 5:52 PM, Danny Yoo <dyoo at cs.wpi.edu> wrote:
> I wanted to make sure I understand how toplevel variables, REPLs and
> namespaces work.  I need to understand this because what I'm doing in
> WeScheme's REPL is not quite right because it doesn't match what is
> happening with DrRacket's REPL.
> I see that the error messages regarding toplevel variables are
> slightly different, depending on context.  e.g. set! can produce
> either the error message
>    set!: unbound identifier in module in: x
> or the message:
>    set!: cannot set undefined variable: x
> depending on the compilation context.  Furthermore, from talking with
> Carl Eastlund, I understand that interactions do something with
> namespaces when hitting toplevel variables.  The following transcript
> confirms to me that toplevel variable lookup and set! cooperates with
> namespaces, at least at the REPL:
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>> my-unbound-variable
> reference to undefined identifier: my-unbound-variable
>> (set! x 16)
> set!: cannot set undefined variable: x
>> (namespace-set-variable-value! 'my-unbound-variable "hello world")
>> my-unbound-variable
> "hello world"
>> (set! my-unbound-variable 'ok)
>> my-unbound-variable
> 'ok
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> I'm trying to understand what's happening.  How does set! know in what
> context (definitions or interactions) it is being used?  What in the
> documentation should I be looking at to better understand this?
> _________________________________________________
>  For list-related administrative tasks:
>  http://lists.racket-lang.org/listinfo/users

Jay McCarthy <jay at cs.byu.edu>
Assistant Professor / Brigham Young University

"The glory of God is Intelligence" - D&C 93

Posted on the users mailing list.