Hi, I'm trying to get a working understanding of macros (I don't know if I'll every really understand them -- I'm trying).
I understand that DATUM->SYNTAX gets it's context information from it's first argument. I have no problems when using simple (non-ellipses) pattern variables, however, I haven't been unable to get a strictly "ellipses pattern" to work in this context (no pun intended). As a work-a-round I came up w/ passing in a dummy symbol to use as the first argument but would like to find out how to do it the correct way. First my work-a-round : (works) (define-syntax test-this (lambda (x) (syntax-case x () [(_ ctx a ...) (with-syntax ([form (datum->syntax (syntax ctx) `(+ ,@(syntax->datum (syntax (a ...)))))]) (syntax form))]))) (let*-values ([(one two three) (values 10 20 30)]) (test-this '* one two three)) I've tried this but it does not work : (define-syntax test-this (lambda (x) (syntax-case x () [(_ a ...) (with-syntax ([form (datum->syntax (syntax (a ...)) `(+ ,@(syntax->datum (syntax (a ...)))))]) (syntax form))]))) (let*-values ([(one two three) (values 10 20 30)]) (test-this one two three)) as it comes back with the error message : compile: unbound identifier in module in: one Any help would be much appreciated.
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users