<!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> </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> </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> </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> </DIV>
<DIV><FONT face=Arial size=2>Why? This is very much 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> </DIV>
<DIV><FONT face=Arial size=2>Jos Koot.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV></BODY></HTML>