2007/3/11, Gabriel Dos Reis <<a href="mailto:gdr@cs.tamu.edu">gdr@cs.tamu.edu</a>>:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
| Simply put:<br>|<br>| (1) Build an program with the macro files. Call it ECL2<br><br>My reading of<br><br>  <a href="http://www.lisp.org/HyperSpec/Body/sec_3-2-2-2.html">http://www.lisp.org/HyperSpec/Body/sec_3-2-2-2.html
</a><br><br>did not suggest to me that the macros will be compiled away, or made<br>available in the compiled obejcts, therefore present in in the second<br>imageg (ECL2) while processing other files.<br>I read your message as suggesting that the macros will be available in
<br>ECL2.  Is that specific to ECL, or is it a standard behaviour?</blockquote></div><br>This is standard. If you have a lisp file that contains a DEFMACRO form as a toplevel form, then this macro will be compiled and, when loaded afterwards, it will be available for your program. Try this: write (defmacro foo (a) `(1+ ,a)) to a file called 
foo.lsp. Compile it. Exit your image. Load the compiled file. Is the macro available or not?<br><br>The problem is that if you want that macro to be available in the compilation environment then you would typically enclose the DEFMACRO in something like (EVAL-WHEN (:COMPILE-TOPLEVEL :LOAD-TOPLEVEL) .... ) so that the DEFMACRO form is also executed before compilation.
<br><br>The most complicated case is for macros which are only required when compiling a particular file, and which are enclosed in a (EVAL-WHEN (:COMPILE-TOPLEVEL) ...) form. Those macros are evaluated at compilation time and will be available for compiling the file in which they were found.
<br><br>What happens with the macro after compilation is not defined by the standard. Some old build systems can make assumptions which are not portable: a lisp is perfectly allowed to clean the enviroment from all macros which were defined by :COMPILE-TOPLEVEL and not loaded afterwards.
<br><br>Juanjo<br><br>-- <br>Dpto. de Fisica Teorica I, Fac. de CC Fisicas, Universidad Complutense,<br>Ciudad Universitaria s/n Madrid 28040 (Spain)<br><a href="http://juanjose.garciaripoll.googlepages.com">http://juanjose.garciaripoll.googlepages.com
</a>