68 lines
4.8 KiB
HTML
68 lines
4.8 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 5.1.1.2.1</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="05_aab.htm">
|
|
<LINK REL=UP HREF="05_aab.htm">
|
|
<LINK REL=NEXT HREF="05_ab.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="05_aab.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Previous]" SRC="../Graphics/Prev.gif" ALIGN=Bottom></A><A REL=UP HREF="05_aab.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Up]" SRC="../Graphics/Up.gif" ALIGN=Bottom></A><A REL=NEXT HREF="05_ab.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Next]" SRC="../Graphics/Next.gif" ALIGN=Bottom></A></H1>
|
|
|
|
<HR>
|
|
|
|
<H2>
|
|
5.1.1.2.1 Examples of Setf Expansions</H2> <P>
|
|
Examples of the contents of the constituents of <A REL=DEFINITION HREF="26_glo_s.htm#setf_expansion"><I>setf expansions</I></A> follow. <P>
|
|
For a variable <I>x</I>: <P>
|
|
<PRE>
|
|
() ;list of temporary variables
|
|
() ;list of value forms
|
|
(g0001) ;list of store variables
|
|
(setq x g0001) ;storing form
|
|
x ;accessing form
|
|
</PRE>
|
|
<P><B>Figure 5-3. Sample Setf Expansion of a Variable</B> <P>
|
|
For <TT>(car </TT><I>exp</I><TT>)</TT>: <P>
|
|
<PRE>
|
|
(g0002) ;list of temporary variables
|
|
(exp) ;list of value forms
|
|
(g0003) ;list of store variables
|
|
(progn (rplaca g0002 g0003) g0003) ;storing form
|
|
(car g0002) ;accessing form
|
|
</PRE>
|
|
<P><B>Figure 5-4. Sample Setf Expansion of a CAR Form</B> <P>
|
|
For <TT>(subseq </TT><I>seq</I><TT> </TT><I>s</I><TT> </TT><I>e</I><TT>)</TT>: <P>
|
|
<PRE>
|
|
(g0004 g0005 g0006) ;list of temporary variables
|
|
(seq s e) ;list of value forms
|
|
(g0007) ;list of store variables
|
|
(progn (replace g0004 g0007 :start1 g0005 :end1 g0006) g0007)
|
|
;storing form
|
|
(subseq g0004 g0005 g0006) ; accessing form
|
|
</PRE>
|
|
<P><B>Figure 5-5. Sample Setf Expansion of a SUBSEQ Form</B> <P>
|
|
In some cases, if a <A REL=DEFINITION HREF="26_glo_s.htm#subform"><I>subform</I></A> of a <A REL=DEFINITION HREF="26_glo_p.htm#place"><I>place</I></A> is itself a <A REL=DEFINITION HREF="26_glo_p.htm#place"><I>place</I></A>, it is necessary to expand the <A REL=DEFINITION HREF="26_glo_s.htm#subform"><I>subform</I></A> in order to compute some of the values in the expansion of the outer <A REL=DEFINITION HREF="26_glo_p.htm#place"><I>place</I></A>. For <TT>(ldb </TT><I>bs</I><TT> (car </TT><I>exp</I><TT>))</TT>: <P>
|
|
<PRE>
|
|
(g0001 g0002) ;list of temporary variables
|
|
(bs exp) ;list of value forms
|
|
(g0003) ;list of store variables
|
|
(progn (rplaca g0002 (dpb g0003 g0001 (car g0002))) g0003)
|
|
;storing form
|
|
(ldb g0001 (car g0002)) ; accessing form
|
|
</PRE>
|
|
<P><B>Figure 5-6. Sample Setf Expansion of a LDB Form</B> <P>
|
|
<P>
|
|
<P><HR>The following <A REL=META HREF="../Front/X3J13Iss.htm">X3J13 cleanup issue</A>, <I>not part of the specification</I>, applies to this section:<P><UL><LI> <A REL=CHILD HREF="../Issues/iss308.htm">SETF-METHOD-VS-SETF-METHOD:RENAME-OLD-TERMS</A><P></UL><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>
|