Bleh, nevermind. It does work without the begin-for-syntax. I think I need a syntax-local-transform, or whatever that function is that executes stuff at phase+1.
My original code was working because I had provided the syntax class at phase 0 and 1, the non-working code only had the class at phase 1. On 02/27/2012 01:32 PM, Jon Rafkind wrote: > Ok but it still doesn't work if I take out the (begin-for-syntax). > > (define-syntax-class x) > > Now its defined at phase 0. Anyway if I can get the syntax class I can access > its attributes (ryan said it was ok). > > On 02/27/2012 01:28 PM, Carl Eastlund wrote: >> You've bound x at phase 1, but you're looking up a phase 0 binding here. >> >> Bug aside, I had no idea there was anything meaningful for external users to >> do with the values underlying syntax classes. What does the value let you >> do? >> >> Carl Eastlund >> >> On Mon, Feb 27, 2012 at 3:21 PM, Jon Rafkind <rafk...@cs.utah.edu >> <mailto:rafk...@cs.utah.edu>> wrote: >> >> I thought syntax-local-value would produce the syntax-class object that >> a given identifier is bound to but it errors out with 'x is not defined as >> syntax'. Any ideas why? There is one part of my original code base where >> this works and another where it doesn't. I cannot seem to replicate the part >> that works in a small test case. >> >> #lang racket >> >> (require (for-syntax syntax/parse)) >> >> (begin-for-syntax >> (define-syntax-class x)) >> >> (define-syntax (bar stx) >> (syntax-case stx () >> [(_ name) (syntax-local-value #'name)])) >> >> (bar x) >> > > > > ____________________ > Racket Users list: > http://lists.racket-lang.org/users
____________________ Racket Users list: http://lists.racket-lang.org/users