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

80 lines
4.6 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: Issue COPY-SYMBOL-COPY-PLIST Writeup</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="../Issues/iss086_w.htm">
<LINK REL=UP HREF="../Issues/iss087.htm">
<LINK REL=NEXT HREF="../Issues/iss088_w.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="../Issues/iss086_w.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Previous]" SRC="../Graphics/Prev.gif" ALIGN=Bottom></A><A REL=UP HREF="../Issues/iss087.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Up]" SRC="../Graphics/Up.gif" ALIGN=Bottom></A><A REL=NEXT HREF="../Issues/iss088_w.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Next]" SRC="../Graphics/Next.gif" ALIGN=Bottom></A></H1>
<HR>
<H2>Issue COPY-SYMBOL-COPY-PLIST Writeup</H2>
<PRE><B>Issue:</B> <A HREF="iss087.htm">COPY-SYMBOL-COPY-PLIST</A><P>
<B>References:</B> <A REL=DEFINITION HREF="../Body/f_cp_sym.htm#copy-symbol"><B>COPY-SYMBOL</B></A> (p 169), <A REL=DEFINITION HREF="../Body/f_cp_lis.htm#copy-list"><B>COPY-LIST</B></A> (p 268), <A REL=DEFINITION HREF="../Body/f_cp_tre.htm#copy-tree"><B>COPY-TREE</B></A> (p<P>
269).<P>
<B>Category:</B> CLARIFICATION<P>
<B>Edit history:</B> 10-Jan-89, Version 1 by Margolin<P>
<P>
<B>Problem Description:<P>
</B><P>
The description of <A REL=DEFINITION HREF="../Body/f_cp_sym.htm#copy-symbol"><B>COPY-SYMBOL</B></A>, where the COPY-PROPS optional argument<P>
is non-NIL, says that a copy of the property list is used as the new<P>
symbol's property list. However, there are several ways in which a list<P>
may be copied, most notably <A REL=DEFINITION HREF="../Body/f_cp_lis.htm#copy-list"><B>COPY-LIST</B></A> and <A REL=DEFINITION HREF="../Body/f_cp_tre.htm#copy-tree"><B>COPY-TREE</B></A>, and the description<P>
doesn't say which mechanism should be used.<P>
<P>
Proposal (<A HREF="iss087.htm">COPY-SYMBOL-COPY-PLIST:COPY-LIST</A>)<P>
<P>
Clarify that when <A REL=DEFINITION HREF="../Body/f_cp_sym.htm#copy-symbol"><B>COPY-SYMBOL</B></A> copies the property list of the symbol, it<P>
is as if (<A REL=DEFINITION HREF="../Body/f_cp_lis.htm#copy-list"><B>COPY-LIST</B></A> (<A REL=DEFINITION HREF="../Body/f_symb_4.htm#symbol-plist"><B>SYMBOL-PLIST</B></A> sym)) were used as the new symbol's<P>
property list.<P>
<P>
<B>Rationale:<P>
</B><P>
<A REL=DEFINITION HREF="../Body/f_cp_lis.htm#copy-list"><B>COPY-LIST</B></A> is the simplest list-copying primitive. The result of this<P>
copy is that <A REL=DEFINITION HREF="../Body/f_get.htm#get"><B>GET</B></A> returns <A REL=DEFINITION HREF="../Body/a_eql.htm#eql"><B>EQL</B></A> results for the two symbols until one of<P>
the property lists is altered, but altering either of the property lists<P>
doesn't affect the other. This is current practice in the<P>
implementations I tested, and probably what most users assume.<P>
<P>
<B>Current Practice:<P>
</B><P>
Symbolics Genera and Sun Common Lisp currently implement this. I<P>
suspect most others do, too.<P>
<P>
<B>Cost to Implementors:<P>
</B><P>
Little or none.<P>
<P>
<B>Cost to Users:<P>
</B><P>
None unless they've been assuming some other type of copy.<P>
<P>
<B>Benefits:<P>
</B><P>
Less ambiguity.<P>
<P>
<B>Aesthetics:<P>
</B><P>
Well, I like it.<P>
<P>
</PRE>
<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>