[plt-scheme] Problem with defmacro and modules
On Mar 1, Andreas Rottmann wrote:
> Hi!
>
> I stumbled across strange behaviour using mzscheme 360; the
> following code will fail with "reference to undefined identifier:
> module":
> [...]
Here's a smaller version of your bug:
(module baz (lib "r5rs.ss" "r5rs"))
(require baz)
(module qux mzscheme)
or even shorter:
(require (lib "r5rs.ss" "r5rs"))
(module qux mzscheme)
The thing is that "r5rs/r5rs.ss" is not a well behaved module -- if
you look in the source, you'll see that it changes a few global
parameters to provide an r5rs environment. The most obvious problem
is that it's doing this:
(current-namespace (scheme-report-environment 5))
which is changing the following interactions. The reason it's there
is to be able to run
mzscheme -M r5rs
and get an R5RS-version of mzscheme. If you want to use R5RS in a
module, use (lib "lang.ss" "r5rs") instead.
This is all described in the doc.txt file, and I added a warning now
for not using r5rs.ss like you did.
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://www.barzilay.org/ Maze is Life!