
[We now have lost all pretence of topicality] On Sun, Jun 01, 2003 at 08:43:03PM -0700, Ashley Yakeley wrote:
Guile seems to be a bit "sloppy" in general. I think it just keeps a dictionary of symbol bindings and passes it around at runtime.
guile> (eval '(define b 5)) guile> b 5
This particular kind of sloppiness is pretty common in Scheme REPLs: la:~$ kawa #|kawa:1|# (eval '(define b 5)) #|kawa:2|# b 5 #|kawa:3|# la:~$ mzscheme Welcome to MzScheme version 204, Copyright (c) 1995-2003 PLT
(eval '(define b 5)) b 5
la:~$ bigloo ------------------------------------------------------------------------------ Bigloo (2.5c) ,--^, `a practical Scheme compiler' _ ___/ /|/ Wed Nov 27 10:49:16 CET 2002 ,;'( )__, ) ' Manuel Serrano ;; // L__. email: ' \ / ' Manuel.Serrano@sophia.inria.fr ^ ^ ------------------------------------------------------------------------------ Welcome to the interpreter 1:=> (eval '(define b 5)) b 1:=> b 5 1:=> la:~$ mit-scheme Scheme Microcode Version 14.9 MIT Scheme running under GNU/Linux Type `^C' (control-C) followed by `H' to obtain information about interrupts. Scheme saved on Tuesday June 18, 2002 at 2:26:05 AM Release 7.7.1 Microcode 14.9 Runtime 15.1 SF 4.40 Liar (Intel i386) 4.115 Edwin 3.112 1 ]=> (eval '(define b 5) system-global-environment) ;Value: b 1 ]=> b ;Value: 5 1 ]=> End of input stream reached Happy Happy Joy Joy. ... though admittedly it's a bit confusing, since "define" either binds or assigns to a variable, depending on whether it was already bound. Lauri Alanko la@iki.fi