Thanks for the clarification. On Jan 26, 2013 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

