<!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.16608" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>#lang scheme (let</FONT><FONT face=Arial size=2> 
((add1 sub1)) (add1 3))</FONT></DIV>
<DIV><FONT face=Arial size=2>is perfecttly alright.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>#lang scheme (define add1 sub1) (add1 
3)</FONT></DIV>
<DIV><FONT face=Arial size=2>is not accepted.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Why?</FONT></DIV>
<DIV><FONT face=Arial size=2>The redefinition does no harm to any other imported 
procedure or macro.</FONT></DIV>
<DIV><FONT face=Arial size=2>That's the beauty of modules: being sure that your 
macros and procedures cannot be corrupted by invoking modules.</FONT></DIV>
<DIV><FONT face=Arial size=2>The restriction forces me to rename procedures and 
syntaxes previously not present, but now provided by #lang scheme.</FONT></DIV>
<DIV><FONT face=Arial size=2>For example, I had my own nice and more general 
version of syntax 'for'. I no longer can import my own 'for' without 
renaming.</FONT></DIV>
<DIV><FONT face=Arial size=2>And I have to rename every invocation of my for in 
all modules requiring my nice 'for'.</FONT></DIV>
<DIV><FONT face=Arial size=2>I think that redefinitions in a module must be 
allowed and must be considered to be local to the module.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Now what happens:</FONT></DIV>
<DIV><FONT face=Arial size=2>1: You have a fine #lang scheme 
program.</FONT></DIV>
<DIV><FONT face=Arial size=2>2: You download a new scheme whose #lang scheme 
happens to include a 'new' procedure or syntax with the same name as used in 
your nice program.</FONT></DIV>
<DIV><FONT face=Arial size=2>3: Or one of the required modules happens to do 
that.</FONT></DIV>
<DIV><FONT face=Arial size=2>4: The program no longer can be 
compiled.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Why? This is&nbsp;very much&nbsp;against the 
principle of scope, I think.</FONT></DIV>
<DIV><FONT face=Arial size=2>I cannot think of any implementation 
problem.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Jos Koot.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV></BODY></HTML>