Re: [racket-users] Basic macro question

2017-02-05 Thread Jon Zeppieri
On Sun, Feb 5, 2017 at 10:12 PM, wrote: > Ahh... datum->syntax, I thought I had seen something like this before. It is > treating "a", or a's form, as the scope for the new ids essentially, but I > can pick standard names. This just presupposes I only care to use my "a" >

Re: [racket-users] Basic macro question

2017-02-05 Thread keccak384
On Sunday, February 5, 2017 at 10:04:47 PM UTC-5, Philip McGrath wrote: > You need to have the lexical context information of x, y, and z come from > stx: otherwise, they will be protected by macro expansion (as a matter of > hygiene). > > > Here's one way to do it: > (define-syntax (a stx) >  

Re: [racket-users] Basic macro question

2017-02-05 Thread Philip McGrath
You need to have the lexical context information of x, y, and z come from stx: otherwise, they will be protected by macro expansion (as a matter of hygiene). Here's one way to do it: > (define-syntax (a stx) > (syntax-parse stx > [(a) > (with-syntax ([x (datum->syntax stx 'x)] >

Re: [racket-users] Basic macro question

2017-02-05 Thread Jon Zeppieri
On Sun, Feb 5, 2017 at 9:41 PM, wrote: > I must be missing something simple here. > > 229> (define-syntax a (lambda (stx) (syntax-parse stx [(a) #`(begin (define x > 97) (define y 98) (define z 99))]))) > 230>(a) > 231>y > 232; y:undefined; > 233; cannot reference undefined

[racket-users] Basic macro question

2017-02-05 Thread keccak384
I must be missing something simple here. 229> (define-syntax a (lambda (stx) (syntax-parse stx [(a) #`(begin (define x 97) (define y 98) (define z 99))]))) 230>(a) 231>y 232; y:undefined; 233; cannot reference undefined identifier 234; [,bt for context] If