69 lines
6.4 KiB
HTML
69 lines
6.4 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: Function REPLACE</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="f_mismat.htm">
|
|
<LINK REL=UP HREF="c_sequen.htm">
|
|
<LINK REL=NEXT HREF="f_sbs_s.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="f_mismat.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Previous]" SRC="../Graphics/Prev.gif" ALIGN=Bottom></A><A REL=UP HREF="c_sequen.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Up]" SRC="../Graphics/Up.gif" ALIGN=Bottom></A><A REL=NEXT HREF="f_sbs_s.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Next]" SRC="../Graphics/Next.gif" ALIGN=Bottom></A></H1>
|
|
|
|
<HR>
|
|
|
|
<A NAME="replace"><I>Function</I> <B>REPLACE</B></A> <P>
|
|
<P><B>Syntax:</B><P>
|
|
<P>
|
|
|
|
<B>replace</B> <I>sequence-1 sequence-2 <TT>&key</TT> start1 end1 start2 end2</I> => <I>sequence-1</I><P>
|
|
<P>
|
|
<P><B>Arguments and Values:</B><P>
|
|
<P>
|
|
<I>sequence-1</I>---a <A REL=DEFINITION HREF="26_glo_s.htm#sequence"><I>sequence</I></A>. <P>
|
|
<I>sequence-2</I>---a <A REL=DEFINITION HREF="26_glo_s.htm#sequence"><I>sequence</I></A>. <P>
|
|
<I>start1</I>, <I>end1</I>---<A REL=DEFINITION HREF="26_glo_b.htm#bounding_index_designator"><I>bounding index designators</I></A> of <I>sequence-1</I>. The defaults for <I>start1</I> and <I>end1</I> are <TT>0</TT> and <A REL=DEFINITION HREF="a_nil.htm#nil"><B>nil</B></A>, respectively. <P>
|
|
<I>start2</I>, <I>end2</I>---<A REL=DEFINITION HREF="26_glo_b.htm#bounding_index_designator"><I>bounding index designators</I></A> of <I>sequence-2</I>. The defaults for <I>start2</I> and <I>end2</I> are <TT>0</TT> and <A REL=DEFINITION HREF="a_nil.htm#nil"><B>nil</B></A>, respectively. <P>
|
|
<P><B>Description:</B><P>
|
|
<P>
|
|
Destructively modifies <I>sequence-1</I> by replacing the <A REL=DEFINITION HREF="26_glo_e.htm#element"><I>elements</I></A> of <I>subsequence-1</I> <A REL=DEFINITION HREF="26_glo_b.htm#bounded"><I>bounded</I></A> by <I>start1</I> and <I>end1</I> with the <A REL=DEFINITION HREF="26_glo_e.htm#element"><I>elements</I></A> of <I>subsequence-2</I> <A REL=DEFINITION HREF="26_glo_b.htm#bounded"><I>bounded</I></A> by <I>start2</I> and <I>end2</I>. <P>
|
|
<I>Sequence-1</I> is destructively modified by copying successive <A REL=DEFINITION HREF="26_glo_e.htm#element"><I>elements</I></A> into it from <I>sequence-2</I>. <A REL=DEFINITION HREF="26_glo_e.htm#element"><I>Elements</I></A> of the subsequence of <I>sequence-2</I> <A REL=DEFINITION HREF="26_glo_b.htm#bounded"><I>bounded</I></A> by <I>start2</I> and <I>end2</I> are copied into the subsequence of <I>sequence-1</I> <A REL=DEFINITION HREF="26_glo_b.htm#bounded"><I>bounded</I></A> by <I>start1</I> and <I>end1</I>. If these subsequences are not of the same length, then the shorter length determines how many <A REL=DEFINITION HREF="26_glo_e.htm#element"><I>elements</I></A> are copied; the extra <A REL=DEFINITION HREF="26_glo_e.htm#element"><I>elements</I></A> near the end of the longer subsequence are not involved in the operation. The number of elements copied can be expressed as: <P>
|
|
<PRE>
|
|
(min (- end1 start1) (- end2 start2))
|
|
</PRE>
|
|
</TT> <P>
|
|
If <I>sequence-1</I> and <I>sequence-2</I> are the <A REL=DEFINITION HREF="26_glo_s.htm#same"><I>same</I></A> <A REL=DEFINITION HREF="26_glo_o.htm#object"><I>object</I></A> and the region being modified overlaps the region being copied from, then it is as if the entire source region were copied to another place and only then copied back into the target region. However, if <I>sequence-1</I> and <I>sequence-2</I> are not the same, but the region being modified overlaps the region being copied from (perhaps because of shared list structure or displaced <A REL=DEFINITION HREF="26_glo_a.htm#array"><I>arrays</I></A>), then after the <A REL=DEFINITION HREF="#replace"><B>replace</B></A> operation the subsequence of <I>sequence-1</I> being modified will have unpredictable contents. It is an error if the elements of <I>sequence-2</I> are not of a <A REL=DEFINITION HREF="26_glo_t.htm#type"><I>type</I></A> that can be stored into <I>sequence-1</I>. <P>
|
|
<P><B>Examples:</B><P>
|
|
|
|
<PRE>
|
|
(replace "abcdefghij" "0123456789" :start1 4 :end1 7 :start2 4)
|
|
=> "abcd456hij"
|
|
(setq lst "012345678") => "012345678"
|
|
(replace lst lst :start1 2 :start2 0) => "010123456"
|
|
lst => "010123456"
|
|
</PRE>
|
|
</TT> <P>
|
|
<P><B>Side Effects:</B><P>
|
|
<P>
|
|
The <I>sequence-1</I> is modified. <P>
|
|
<P><B>Affected By:</B> None.
|
|
<P>
|
|
<P><B>Exceptional Situations:</B> None.
|
|
<P>
|
|
<P><B>See Also:</B><P>
|
|
<P>
|
|
<A REL=DEFINITION HREF="f_fill.htm#fill"><B>fill</B></A> <P>
|
|
<P><B>Notes:</B> None.
|
|
<P>
|
|
<P><HR>The following <A REL=META HREF="../Front/X3J13Iss.htm">X3J13 cleanup issues</A>, <I>not part of the specification</I>, apply to this section:<P><UL><LI> <A REL=CHILD HREF="../Issues/iss284.htm">RANGE-OF-START-AND-END-PARAMETERS:INTEGER-AND-INTEGER-NIL</A><LI> <A REL=CHILD HREF="../Issues/iss332.htm">SUBSEQ-OUT-OF-BOUNDS</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>
|