#define-module の中で select-module せずにERマクロを書くとリネームがおかしい気がします。
#(define-module foo
(export m n)
(define x 'foo-x)
(define-syntax m
(er-macro-transformer
(^ (e r c)
(r 'x)))))
(select-module foo)
(define-syntax n
(er-macro-transformer
(^ (e r c)
(r 'x))))
(select-module user)
(import foo)
(define x 'user-x)
(print (m)) ; user-x
(print (n)) ; foo-x
#(define-module bar-1
(export p)
(define-syntax p
(er-macro-transformer
(^ (e r c)
(print (r 'x))
#f))))
(define-module bar-2
(export q)
(select-module bar-2)
(define-syntax q
(er-macro-transformer
(^ (e r c)
(print (r 'x))
#f))))
(select-module user)
(import bar-1)
(import bar-2)
(p) ; #<identifier user#x.1240780>
(q) ; #<identifier bar-2#x.1240620>
#これ書いてて気付いたんですが、define-module の中で select-module しても外側まで影響するのは意外でした。
##プリコンパイルで問題が出たからこうした、と書いてあるが、実行時に名前でモジュールを引いてくれば良さそうな。
#実行時、じゃなくてプリコンパイルされたものがロードされる時、だな。