Hi All, I'd like to change the program below s.t. the local-expand uses an internal definition context. Simply changing 'top-level to 'module does not work.
I have tried to use various combinations of - (generate-expand-context #t) - syntax-local-make-definition-context - syntax-local-bind-syntaxes without hitting the right incantation. Any hints are welcome. /Jens Axel #lang racket (require racket/stxparam racket/splicing (for-syntax syntax/parse syntax/context)) (begin-for-syntax (define *types* '())) (define-syntax (program stx) (syntax-parse stx [(_ (def ...) (expr ...)) (let () (define defs (local-expand #'(begin def ...) 'top-level '())) (with-syntax ([defs defs]) (displayln (list 'program *types*)) #'(begin defs expr ...)))])) (define-syntax (def stx) (syntax-parse stx [(_ name type expr) (begin (set! *types* (cons (cons #'name #'type) *types*)) #'(define name expr))])) (program ((def x int 42) (def y str "foo")) ((list x y))) ____________________ Racket Users list: http://lists.racket-lang.org/users