Re: Order of macroexpansion
- From: pjb@xxxxxxxxxxxxxxxxx (Pascal J. Bourguignon)
- Date: Thu, 31 Jan 2008 14:58:11 +0100
Rainer Joswig <joswig@xxxxxxx> writes:
In article <47a1c9f7$0$90267$14726298@xxxxxxxxxxxxxxx>,
Peter Hildebrandt <peter.hildebrandt@xxxxxxxxx> wrote:
Say, I have the macros outer and inner, and I write the following:
(outer 10 (inner +1))
Is it specified, in which order outer and inner are expanded?
Outer is expanded. It returns a new form.
Whatever 'outer' returns will then be evaluated
as usual. Rember, the expansion of outer might
or might not have the 'inner' form.
or might or might not have it too:
(defmacro outer (arg &body body)
`(progn
,@body
(macrolet ((inner (&whole w arg) `(print ',w)))
,@body)))
(macroexpand '(outer 10 (inner +1)))
--> (PROGN (INNER 1) (MACROLET ((INNER (&WHOLE W ARG)
(LIST 'PRINT (LIST 'QUOTE W)))) (INNER 1))) ;
^^^^^^^^ ^^^^^^^^^
| |
+-- let's say you've got inner here. |
but what is this? ---------+
;-)
--
__Pascal Bourguignon__
.
- References:
- Order of macroexpansion
- From: Peter Hildebrandt
- Re: Order of macroexpansion
- From: Rainer Joswig
- Order of macroexpansion
- Prev by Date: Re: Tail recursion syntactic sugar faked with TAGBODY-based construct?
- Next by Date: Re: Order of macroexpansion
- Previous by thread: Re: Order of macroexpansion
- Next by thread: Re: Order of macroexpansion
- Index(es):
Relevant Pages
|