I do have a cludgy fix for this but are in search for a better solution. consider the problem: (define-syntax-class a (pattern (1 x:b)) (pattern ())) (define-syntax-class b (pattern (2 x:a)) (pattern ())) the syntax class definitions above would expand to something like (begin (define parser-a code-a ...) (define-syntax a spec-a)) (begin (define parser-b code-b ...) (define-syntax b spec-b)) In racket they manage to evaluate the define-syntax forms before the define-forms cause in the expansion of code-a amd code-b they need the spec's spec-a and spec-b. Do you have any ideas how solve this. I do have a fix for problem but it is not easy to use. /Stefan