[racket] macro pattern problem

From: Peter Samarin (petrsamarin at gmail.com)
Date: Mon Jan 26 17:05:59 EST 2015

Great, thanks!

On 01/26/2015 10:57 PM, Alexander D. Knauth wrote:
> syntax/parse can do that:
> #lang racket
> (require (for-syntax racket/base syntax/parse syntax/parse/experimental/template))
> (define-syntax quote-even
>   (syntax-parser
>     [(quote-even (~seq att val) ...)
>      (template (list (?@ 'att val) ...))]))
> (quote-even a 1 b 2) ; '(a 1 b 2)
>
>
> On Jan 26, 2015, at 4:48 PM, Peter Samarin <petrsamarin at gmail.com> wrote:
>
>> Hello all,
>>
>> I want to quote every even and evaluate every odd variable of the input and assemble everything in a list.
>> So I wrote the following macro to do it:
>>
>> (define-syntax quote-even
>>   (syntax-rules ()
>>     [(quote-even att val ...)
>>      (list 'att val ...)]))
>>
>> But in the resulting list, only the very first attribute is quoted:
>>
>> (syntax->datum
>> (expand-once
>>   '(quote-even a 10 b 20 c 30)))
>>
>>> (list 'a 10 b 20 c 30)
>>
>> (quote-even a 10 b 20 c 30)
>>> b: undefined;
>>
>>
>> Is there a way to do do it?
>>
>> Cheers,
>> Peter Samarin
>> ____________________
>> Racket Users list:
>> http://lists.racket-lang.org/users
>

Posted on the users mailing list.