1
0
Fork 0
cl-sites/HyperSpec-7-0/HyperSpec/Body/03_bc.htm
2024-04-01 10:24:07 +02:00

36 lines
5 KiB
HTML

<!-- Common Lisp HyperSpec (TM), version 7.0 generated by Kent M. Pitman on Mon, 11-Apr-2005 2:31am EDT -->
<HTML>
<HEAD>
<TITLE>CLHS: Section 3.2.3</TITLE>
<LINK HREF="../Data/clhs.css" REL="stylesheet" TYPE="text/css" />
<META HTTP-EQUIV="Author" CONTENT="Kent M. Pitman">
<META HTTP-EQUIV="Organization" CONTENT="LispWorks Ltd.">
<LINK REL=TOP HREF="../Front/index.htm">
<LINK REL=COPYRIGHT HREF="../Front/Help.htm#Legal">
<LINK REL=DISCLAIMER HREF="../Front/Help.htm#Disclaimer">
<LINK REL=PREV HREF="03_bbc.htm">
<LINK REL=UP HREF="03_b.htm">
<LINK REL=NEXT HREF="03_bca.htm">
</HEAD>
<BODY>
<H1><A REV=MADE HREF="http://www.lispworks.com/"><IMG WIDTH=80 HEIGHT=65 ALT="[LISPWORKS]" SRC="../Graphics/LWSmall.gif" ALIGN=Bottom></A><A REL=TOP HREF="../Front/index.htm"><IMG WIDTH=237 HEIGHT=65 ALT="[Common Lisp HyperSpec (TM)]" SRC="../Graphics/CLHS_Sm.gif" ALIGN=Bottom></A> <A REL=PREV HREF="03_bbc.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Previous]" SRC="../Graphics/Prev.gif" ALIGN=Bottom></A><A REL=UP HREF="03_b.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Up]" SRC="../Graphics/Up.gif" ALIGN=Bottom></A><A REL=NEXT HREF="03_bca.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Next]" SRC="../Graphics/Next.gif" ALIGN=Bottom></A></H1>
<HR>
<H2>
3.2.3 File Compilation</H2> <P>
The <A REL=DEFINITION HREF="26_glo_f.htm#function"><I>function</I></A> <A REL=DEFINITION HREF="f_cmp_fi.htm#compile-file"><B>compile-file</B></A> performs compilation of <A REL=DEFINITION HREF="26_glo_f.htm#form"><I>forms</I></A> in a file following the rules specified in <A REL=CHILD HREF="03_bb.htm">Section 3.2.2 (Compilation Semantics)</A>, and produces an output file that can be loaded by using <A REL=DEFINITION HREF="f_load.htm#load"><B>load</B></A>. <P>
Normally, the <A REL=DEFINITION HREF="26_glo_t.htm#top_level_form"><I>top level forms</I></A> appearing in a file compiled with <A REL=DEFINITION HREF="f_cmp_fi.htm#compile-file"><B>compile-file</B></A> are evaluated only when the resulting compiled file is loaded, and not when the file is compiled. However, it is typically the case that some forms in the file need to be evaluated at compile time so the remainder of the file can be read and compiled correctly. <P>
The <A REL=DEFINITION HREF="s_eval_w.htm#eval-when"><B>eval-when</B></A> <A REL=DEFINITION HREF="26_glo_s.htm#special_form"><I>special form</I></A> can be used to control whether a <A REL=DEFINITION HREF="26_glo_t.htm#top_level_form"><I>top level form</I></A> is evaluated at compile time, load time, or both. It is possible to specify any of three situations with <A REL=DEFINITION HREF="s_eval_w.htm#eval-when"><B>eval-when</B></A>, denoted by the symbols <TT>:compile-toplevel</TT>, <TT>:load-toplevel</TT>, and <TT>:execute</TT>. For top level <A REL=DEFINITION HREF="s_eval_w.htm#eval-when"><B>eval-when</B></A> forms, <TT>:compile-toplevel</TT> specifies that the compiler must evaluate the body at compile time, and <TT>:load-toplevel</TT> specifies that the compiler must arrange to evaluate the body at load time. For non-top level <A REL=DEFINITION HREF="s_eval_w.htm#eval-when"><B>eval-when</B></A> forms, <TT>:execute</TT> specifies that the body must be executed in the run-time <A REL=DEFINITION HREF="26_glo_e.htm#environment"><I>environment</I></A>. <P>
The behavior of this <A REL=DEFINITION HREF="26_glo_f.htm#form"><I>form</I></A> can be more precisely understood in terms of a model of how <A REL=DEFINITION HREF="f_cmp_fi.htm#compile-file"><B>compile-file</B></A> processes forms in a file to be compiled. There are two processing modes, called ``not-compile-time'' and ``compile-time-too''. <P>
Successive forms are read from the file by <A REL=DEFINITION HREF="f_cmp_fi.htm#compile-file"><B>compile-file</B></A> and processed in not-compile-time mode; in this mode, <A REL=DEFINITION HREF="f_cmp_fi.htm#compile-file"><B>compile-file</B></A> arranges for forms to be evaluated only at load time and not at compile time. When <A REL=DEFINITION HREF="f_cmp_fi.htm#compile-file"><B>compile-file</B></A> is in compile-time-too mode, forms are evaluated both at compile time and load time. <P>
<A REL=CHILD HREF="03_bca.htm"><H2>
3.2.3.1 Processing of Top Level Forms</H2></A><P><HR>
<A REL=NAVIGATOR HREF="../Front/StartPts.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Starting Points]" SRC="../Graphics/StartPts.gif" ALIGN=Bottom></A><A REL=TOC HREF="../Front/Contents.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Contents]" SRC="../Graphics/Contents.gif" ALIGN=Bottom></A><A REL=INDEX HREF="../Front/X_Master.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Index]" SRC="../Graphics/Index.gif" ALIGN=Bottom></A><A REL=INDEX HREF="../Front/X_Symbol.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Symbols]" SRC="../Graphics/Symbols.gif" ALIGN=Bottom></A><A REL=GLOSSARY HREF="../Body/26_a.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Glossary]" SRC="../Graphics/Glossary.gif" ALIGN=Bottom></A><A HREF="../Front/X3J13Iss.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Issues]" SRC="../Graphics/Issues.gif" ALIGN=Bottom></A><BR>
<A REL=COPYRIGHT HREF="../Front/Help.htm#Legal"><I>Copyright 1996-2005, LispWorks Ltd. All rights reserved.</I></A><P>
</BODY>
</HTML>