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

Reply via email to