<HTML><FONT FACE=arial,helvetica><FONT  SIZE=2 FAMILY="SANSSERIF" FACE="Arial" LANG="0">I have run into another strange interaction between a macro and module, where my macro behaves differently when defined outside a module versus inside a module:<BR>
<BR>
As an example, I give the following small module and macro definition:<BR>
<BR>
(module ex mzscheme<BR>
&nbsp; (provide test)<BR>
&nbsp; <BR>
&nbsp; (define-syntax (test stx)<BR>
&nbsp;&nbsp;&nbsp; (syntax-case stx (-)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((_ (- a b))<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (syntax '(subtract a b)))<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((_ (op a b))<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (syntax '(op a b)))))<BR>
&nbsp; )<BR>
<BR>
When I test this macro (at the top level),<BR>
 (test (+ 3 4))&nbsp;&nbsp; ==&gt; (+ 3 4)&nbsp;&nbsp; ;; this is "correct"<BR>
and<BR>
 (test (- 3 4))&nbsp;&nbsp;&nbsp; ==&gt; (- 3 4)&nbsp;&nbsp;&nbsp; ;; this is wrong!<BR>
<BR>
This is a silly macro, but the example with "-" yields the wrong result!<BR>
But when I define this macro at the top-level, outside of a module, I get the correct result:<BR>
 (test (- 3 4))&nbsp;&nbsp;&nbsp; ==&gt; (subtract 3 4)<BR>
<BR>
Other symptoms:<BR>
- if I change the "-" in this macro to "diff", (test (diff 3 4)) ==&gt; (subtract 3 4)<BR>
&nbsp; (other names bound in to values, such as * and + also fail to work in this example)<BR>
- names (presumably) bound to syntax, such as "or" work fine<BR>
<BR>
Jim<BR>
<BR>
</FONT></HTML>