[plt-scheme] another macro+module anomaly
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:
As an example, I give the following small module and macro definition:
(module ex mzscheme
(provide test)
(define-syntax (test stx)
(syntax-case stx (-)
((_ (- a b))
(syntax '(subtract a b)))
((_ (op a b))
(syntax '(op a b)))))
)
When I test this macro (at the top level),
(test (+ 3 4)) ==> (+ 3 4) ;; this is "correct"
and
(test (- 3 4)) ==> (- 3 4) ;; this is wrong!
This is a silly macro, but the example with "-" yields the wrong result!
But when I define this macro at the top-level, outside of a module, I get the
correct result:
(test (- 3 4)) ==> (subtract 3 4)
Other symptoms:
- if I change the "-" in this macro to "diff", (test (diff 3 4)) ==>
(subtract 3 4)
(other names bound in to values, such as * and + also fail to work in this
example)
- names (presumably) bound to syntax, such as "or" work fine
Jim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20021126/d7ed4d02/attachment.html>