On Wed, Sep 19, 2012 at 3:10 PM, Eduardo Bellani <ebell...@gmail.com> wrote: > Hello list. > > Could anyone give me a hand and explaing why this > > #lang racket > (struct tst (attr1 attr2)) > > (define-syntax (list->struct stx) > (syntax-case stx () > [(_ attr-list) #`(tst #,@attr-list)]))
Do you have an example of a use where this breaks? I suspect that you need to refer to attr-list in the syntactic environment, so : (define-syntax (list->struct stx) (syntax-case stx () [(_ attr-list) #`(tst #,@#'attr-list)])) But you might be able to handle the splicing directly through the template, without needing to quasiquote: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; #lang racket (struct tst (attr1 attr2)) (define-syntax (list->struct stx) (syntax-case stx () [(_ (attr-list ...)) #'(tst attr-list ...)])) ; ;Example (list->struct (3 4)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Also, is this just for learning how to write macros, or are you trying to serialize structures? If you're just trying to get structures serializable, the documentation at http://docs.racket-lang.org/reference/serialization.html may help. ____________________ Racket Users list: http://lists.racket-lang.org/users