<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.6000.16414" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV>Hi Wayne,</DIV>
<DIV>I&nbsp;regret my earlier posting on using namespace-set-variable-value! for 
setting variables whose names are determined at run time.&nbsp;Your code does 
not work because&nbsp;modules are separated from top level namespaces. That's 
(among other things) what makes modules&nbsp;safe. The following works, but are 
you sure you want this? Better suggestions for runtime bookkeeping of 
symbol/value associations have already been posted. IMHO it (usually) 
is&nbsp;better to forget the top level alltogether and to think in terms of 
modules only. I know from bad experiences that the toplevel is tricky.</DIV>
<DIV>Jos Koot</DIV>
<DIV>&nbsp;</DIV>
<DIV>(module lang mzscheme<BR>&nbsp; (printf "defining~n")<BR>&nbsp; 
(namespace-set-variable-value! 'f 1))</DIV>
<DIV>&nbsp;</DIV>
<DIV>(module test mzscheme<BR>&nbsp; (require lang) ; does the top level 
assignment (once only)<BR>&nbsp; (provide (all-defined))<BR>&nbsp; (define 
(test1) (namespace-variable-value 'f))) ; refers to the top level</DIV>
<DIV>&nbsp;</DIV>
<DIV>(require test) ;; prints 
defining<BR>(test1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;; --&gt; 
1<BR>(require lang) ;; does nothing</DIV>
<DIV>&nbsp;</DIV>
<DIV>(((((lambda(x)((((((((x x)x)x)x)x)x)x)x))<BR>&nbsp;&nbsp;&nbsp; 
(lambda(x)(lambda(y)(x(x y)))))<BR>&nbsp;&nbsp; (lambda(x)(x)x))<BR>&nbsp; 
(lambda()(printf "Greetings, Jos~n"))))</DIV>
<BLOCKQUOTE 
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV 
  style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
  <A title=support@taxupdate.com 
  href="mailto:support@taxupdate.com">support@taxupdate.com</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A title=plt-scheme@list.cs.brown.edu 
  href="mailto:plt-scheme@list.cs.brown.edu">plt-scheme@list.cs.brown.edu</A> 
  </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Friday, April 27, 2007 12:21 
  PM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> [plt-scheme] 
  namespace-variable-value</DIV>
  <DIV><BR></DIV>Based on my understanding of the section "8.3 Namespace 
  Utilities" from the<BR>docs, I was expecting the following to print a 
  "1":<BR><BR>(module lang mzscheme<BR>&nbsp; (provide 
  (all-defined)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  (all-from mzscheme))<BR>&nbsp; (define f 1))<BR><BR>(module test 
  lang<BR>&nbsp; (provide (all-defined))<BR>&nbsp; (define 
  (test1)<BR>&nbsp;&nbsp;&nbsp; (display (namespace-variable-value 
  'f))))<BR><BR>(require test)<BR>(test1)&nbsp;&nbsp;&nbsp;&nbsp; ;; 
  "namespace-variable-value: f is not defined"<BR><BR>Why doesn't the call to 
  namespace-variable-value in module test 
  succeed?<BR><BR>Wayne<BR>_________________________________________________<BR>&nbsp; 
  For list-related administrative tasks:<BR>&nbsp; <A 
  href="http://list.cs.brown.edu/mailman/listinfo/plt-scheme">http://list.cs.brown.edu/mailman/listinfo/plt-scheme</A><BR></BLOCKQUOTE></BODY></HTML>