On Wed, Aug 17, 2011 at 6:25 PM, Sam Tobin-Hochstadt <sa...@ccs.neu.edu> wrote: > The following idiom duplicates the syntax properties on `stx': > > (define-syntax (m stx) (datum->syntax #'here 'id stx stx)) > > This is a problem for me because I use syntax properties to indicate > polymorphic type instantiation. If an expression that's actually a > macro using this idiom is instatiated, then Typed Racket tries to do > the type instantiation twice, resulting in an error. See the below > program, which fails. > > Should I expect that duplicate syntax properties are a natural result > of expansion, and find some way to handle them? Or is there something > else that should happen? > > #lang typed/racket > (: id : (All (A) (A -> A))) > (define (id x) x) > (define-syntax (m stx) (datum->syntax #'here 'id stx stx)) > (inst m Integer) > > -- > sam th > sa...@ccs.neu.edu
Merging syntax properties -- duplicating in this case, since the macro's input and output have the same properties -- are a natural result of expansion, as you say. See the third paragraph in the reference on syntax properties: http://docs.racket-lang.org/reference/stxprops.html I think you need to find some way to handle them. --Carl _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev