Subject: Re: copy construction in CLOS From: Erik Naggum <erik@naggum.no> Date: 1999/02/13 Newsgroups: comp.lang.lisp Message-ID: <3127867690633121@naggum.no> * dyoder@tazent.com (Daniel J. Yoder) | Another newbie question. I am a little confused by the lack of any | explicit notion in CLOS for copying an object. there is no such thing as a copy of an object. let me clarify before you object. let's define a copy of an original object to be an object equal to the original in all respects save that if you alter the copy, you do not also alter the original. that seems to imply deep copy, but I think it means shallow copy. now, since "copy" is defined in terms of the possible alterations, it should be intuitively evident that there is a _purpose_ to a copy that needs to be communicated. e.g., when I want a copy of a _list_, I want a fresh cdr chain that I can modify, but I do _not_ thereby want copies of all the elements of the list. Common Lisp offers COPY-LIST to copy the cdr chain, COPY-ALIST to copy the cdr chain and any cons cells that are members of the list, and COPY-TREE to copy all cons cells. this is pretty specific, don't you think? try to communicate this to a generic copy for lists. and, since "copy" is defined in terms of "equal", which does not include the object identity at some level or another, and possibly any number of other properties, all the problems of a generic EQUAL apply with full force. you'll note that there is no EQUAL for class instances, either. I yield the floor to Kent Pitman on EQUAL. :) #:Erik -- Y2K conversion simplified: Januark, Februark, March, April, Mak, June, Julk, August, September, October, November, December.