[plt-scheme] Very basic macro question
You probably want match. Alernatively you can use syntax-case in a procedure for example:
#lang scheme
(define (trafo x)
(syntax->datum
(syntax-case x ()
(id (identifier? #'id) #'(identifier id))
((a ...) #'(list a ...))
(else #'else))))
(trafo 'a) ; --> (identifier a)
(trafo '(a b c)) ; (list a b c)
(trafo "string") ; --> string
Jos
----- Original Message -----
From: johny seventy
To: noelwelsh at gmail.com
Cc: plt-scheme at list.cs.brown.edu
Sent: Tuesday, January 19, 2010 7:26 PM
Subject: RE: [plt-scheme] Very basic macro question
> Date: Sun, 17 Jan 2010 18:42:32 +0000
> Subject: Re: [plt-scheme] Very basic macro question
> From: noelwelsh at gmail.com
> To: johnyseventy at hotmail.com
> CC: plt-scheme at list.cs.brown.edu
>
> On Sun, Jan 17, 2010 at 2:22 PM, johny seventy <johnyseventy at hotmail.com> wrote:
> > I understand why example
> > four works but is there anyway I can do this without eval?
>
> A transformer binding and syntax-local-value.
>
> It doesn't make sense to parameterise a macro by a run-time value --
> macros are expanded before run-time so they cannot depend on run-time
> values.
>
> N.
Thanks for the responses. I just want to clarify one more thing.
I have an sexpr which is created dynamically at runtime and I want to transform this sexpr. It seemed really easy to do the transformation using a syntax-rules macro. So the problem is I have missed the boat at this stage as macro expansion has already taken place. The only way I can see how to invoke the macro at this stage is by using eval. I am not sure what you mean by a transformer binding and syntax-local-value. Is there a simple example of this in action I could take a look at?
Thanks for your patience.
------------------------------------------------------------------------------
Not got a Hotmail account? Sign-up now - Free
------------------------------------------------------------------------------
_________________________________________________
For list-related administrative tasks:
http://list.cs.brown.edu/mailman/listinfo/plt-scheme
------------------------------------------------------------------------------
Se certificó que el correo entrante no contiene virus.
Comprobada por AVG - www.avg.es
Versión: 9.0.730 / Base de datos de virus: 270.14.150/2632 - Fecha de la versión: 01/19/10 08:34:00
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20100119/53ebe2a9/attachment.html>