Actually, moving the rename to the require doesnt work either. But now there's a different error.
Welcome to DrRacket, version 5.3.2.2 [3m]. Language: racket [custom]. . . ..\..\plt\collects\racket\require-transform.rkt:266:2: syntax-local-module-exports: unknown module module name: #<resolved-module-path:'tmp-module-name> > On Sat, Jan 26, 2013 at 6:55 AM, Matthew Flatt <[email protected]> wrote: > At Sat, 26 Jan 2013 01:12:04 -0500, Stephen Chang wrote: >> Is this a supported use of submodules? >> >> >> #lang racket >> >> (define-syntax (def-wrapped stx) >> (syntax-case stx () >> [(_ (f arg ...) body ...) >> #'(begin >> (module tmp-module-name racket >> (define (f-tmp arg ...) (displayln "wrapper") body ...) >> (provide (rename-out [f-tmp f]))) >> (require (quote tmp-module-name)))])) >> >> (def-wrapped (f x) (+ x 1)) >> (f 100) >> >> >> Welcome to DrRacket, version 5.3.1.3 [3m]. >> Language: racket [custom]. >> . f: unbound identifier in module in: f > > Your `require' is macro-introduced, so it only binds uses that are also > macro-introduced. Try renaming on import, since the rename target is an > identifier supplied to the macro: > > #lang racket > > (define-syntax (def-wrapped stx) > (syntax-case stx () > [(_ (f arg ...) body ...) > #'(begin > (module tmp-module-name racket > (define (f-tmp arg ...) (displayln "wrapper") body ...) > (provide f-tmp)) > (require (rename-in (quote tmp-module-name) > [f-tmp f])))])) > > (def-wrapped (f x) (+ x 1)) > (f 100) > _________________________ Racket Developers list: http://lists.racket-lang.org/dev

