Subject: Re: IDENTITY-OF function
From: Erik Naggum <erik@naggum.net>
Date: Wed, 13 Feb 2002 17:24:16 GMT
Newsgroups: comp.lang.lisp
Message-ID: <3222609858748033@naggum.net>

* Will Fitzgerald
| For various reasons -- mostly having to do with serializing Lisp data or
| remote procedure calls -- it seems useful to have an 'identity-of'
| function which returns a (unique) identity for a Lisp object.

  The Lisp object _is_ its identity, so identity-of is already implemented:
  it is the function identity.

| If identity is true, the output from forms is followed by a space
| character and a representation of the object's identity, typically a
| storage address.

  That is only (intended to be) useful for debugging purposes.

| 1. Are there implementation specific functions that do what I want?

  Well, you can get the address of a Lisp object in most implementations,
  but what good will it do?  Even when you use print-unreadable-object,
  there is no guarantee that the identity will actually remain the same
  over any period of time.  Most Common Lisp implementations utilize a
  memory management system that can move objects around in memory.

| 2. Do you think the following (which returns the identity as a string)
| is reasonably portable?

  If you want portable, use an eq hashtable that maps to a unique numeric
  object identifier that you request for each object.  Note that this
  entangles you in the annoying object ownership protocol business.  You
  may get around this problem with a weak key.  A bidirectional hashtable
  does not exist, so you may have to use another with the identifier as key
  and a weak value, instead.

  If you need this for RPC, what good is the "identity" if it is not
  understood on the other side of the communication?  I must be missing
  something important here.

///
-- 
  In a fight against something, the fight has value, victory has none.
  In a fight for something, the fight is a loss, victory merely relief.