On Fri, Jul 3, 2015 at 3:09 AM, Edi Weitz <e...@weitz.de> wrote: > Just out of curiosity and without any relevance in practise: > > Is there one place in the standard where it is explicitly said that > two symbols which are the "same" symbol must be "identical"? I know > that there are a couple of examples where this is implied, but > formally the examples aren't part of the standard, right? > > The EQ dictionary entry for example shows this example: > > (eq 'a 'a) => true > > and then it continues with this note (emphasis mine): "Symbols that > print the same USUALLY are EQ to each other because of the use of the > INTERN function." > > And the entry for INTERN is actually the closest I could find in terms > of clarification because it says that if a symbol of a specified name > is already accessible, _IT_ is returned -- which sounds like object > identity to me. > > But how does this fit into the picture? > > CL-USER 1 > (defparameter *s* 'foo) > *S* > CL-USER 2 > (unintern 'foo) > T > CL-USER 3 > (defparameter *s2* 'foo) > *S2* > CL-USER 4 > (eq *s* *s2*) > NIL > > *S* has lost its home package and is thus not EQ to *S2*, sure, but > how do we explain this in terms of object identity? Has the UNINTERN > operation changed the identity of *S* which once was the one and only > CL-USER::FOO but can't be anymore because this role is now occupied by > *S2*? > > Did I miss some clarifying words in the standard? Did I just manage > to confuse myself? >
I think you manged to confuse yourself. unintern of course did not change the identity of *s* (by which we are meaning the symbol bound to *S*) -- identity is identity is identity. Unintern did, however, change the package of *s*, so (as one side-effect) a new symbol of the same name in the same package is a new object (identical to nothing at birth). Perhaps the problem is confusing the levels of abstraction offered by (a) EQ and (b) object identity. The latter is a very simple idea. EQ, as you adroitly demonstrated, worries about all sorts of things, including a symbol's package. my2 anyway. -kt > Thanks, > Edi. > > PS: The UNINTERN entry warns about side effects which could harm > consistency, so maybe this is what they meant? > > -- Kenneth Tilton 54 Isle of Venice Dr Fort Lauderdale, FL 33301 k...@tiltontec.com http://tiltontec.com @tiltonsalgebra 646-269-1077 "In a class by itself." *-Macworld*