Subject: Re: Priority queue insert into a list
From: rpw3@rigden.engr.sgi.com (Rob Warnock)
Date: 1997/09/25
Newsgroups: comp.lang.lisp
Message-ID: <60cl3v$3hqaa@fido.asd.sgi.com>

William Paul Vrotney <vrotney@netcom.com> wrote:
+---------------
| So far, I like [Pitman's] term "Call by object". [...but] does not seem
| to imply the NO-copying concept as Lisp relates to other languages.
| "Call by object pointer" seems to hit it right on the head, but still
| uses that undesirable "pointer".
+---------------

How about "call by object reference"?  [As distinguished from traditional
"call by reference" which is really "call by variable reference"...]

+---------------
| Also some objects like small integers may not actually be passed as pointers.
+---------------

That's a non-issue, IMHO. As far as copying goes, *all* mutable objects
are "call by object reference".  So the fact that a given implementation
may choose for some subset of non-mutable objects (e.g., small numbers,
chars, t, nil, etc.) to actually use "call by copy of object" instead of
"call by object reference" is non-observable to the program [except possibly
by its effect on the garbage collector].

And when you say ((lambda (foo) (setf foo 43923876)) 27), you're mutating
the *variable* [well, the binding], not the objects 27 or 43923876, which
are immutable whether or not they are "small" or "large", and whether or not
their values are conveyed by copying the entire object or just copying a
reference (pointer).

[I *do* hope I got that right...]


-Rob

-----
Rob Warnock, 7L-551		rpw3@sgi.com   http://reality.sgi.com/rpw3/
Silicon Graphics, Inc.		Phone: 650-933-1673 [New area code!]
2011 N. Shoreline Blvd.		FAX: 650-933-4392
Mountain View, CA  94043	PP-ASEL-IA