I'm making a #%module-begin macro, but I want to delegate it to an existing 
one. 

OK, let's start with a rename transformer:

(provide (rename-out [mb #%module-begin]))
(define-syntax mb (make-rename-transformer #'other-module-begin))
(define-syntax other-module-begin (λ (stx) #'foo))

That works, but I also need to pass some extra data to `other-module-begin` 
that controls how it's configured during this delegation. 

OK, let's add a syntax property. But wrapping the property around the 
transformer doesn't work, because a rename transformer is not `syntax?`:

(provide (rename-out [mb #%module-begin]))
(define-syntax mb (syntax-property (make-rename-transformer 
#'other-module-begin) 'foo "bar"))
(define-syntax other-module-begin (λ (stx) #'foo))

;; syntax-property: contract violation


I can wrap the property around the target identifier, but the syntax property 
doesn't stick:

(provide (rename-out [mb #%module-begin]))
(define-syntax mb (make-rename-transformer (syntax-property 
#'other-module-begin 'foo "bar")))
(define-syntax other-module-begin (λ (stx) #'foo))

(syntax-property #'mb 'foo) ; #f


Other possibilities with equivalent effect?

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to