Subject: Re: C++ briar patch (Was: Object IDs are bad)
From: Erik Naggum <>
Date: 1997/05/29
Newsgroups: comp.lang.scheme,comp.lang.lisp,comp.lang.misc,comp.lang.functional,comp.lang.c++
Message-ID: <>

* Peter da Silva
| What's the difference between a slot and a pointer, semantically?

hello?  the same difference as between a struct member and pointer.

| "Returning the contents of" is "dereferencing".

really?  suppose a cons is defined as struct cons { Object car, cdr; }; and
a struct cons foo and exists.  the C expression `' returns the
contents of the `car' slot (struct member).  suppose that struct cons *bar
is a pointer.  while `*bar' dereferences the pointer, `bar->car' and
(*bar).car returns the contents of the `car' slot in the pointed-to cons.

| Let's say I defined a C-like language with "slots" instead of "pointers".

I wonder, have you never seen the word "slot" before?  Lisps have had
`defstruct' in various shapes and forms for a _very_ long time.  the word
"slot" is used for the individual objects that go into a structure.

| (remember, I'm just responding to an assertion that pointers, as defined
| above, don't exist in scheme)

I think your responses on Lisp in general and this issue in particular are
very weak.

in a language like C that has a type that is a pointer to another type, and
the programmer is able to manipulate the pointer as a value, "dereferencing"
has meaning.  in a language like Scheme or Lisp where you cannot take the
address of objects, and you cannot manipulate the pointer itself, it has no
meaning to talk of "derefencing" even though it would have been meaningful
if you had implemented this language in a C-like language.

of course Scheme _uses_ pointers in the C sense for its memory accesses,
but Scheme itself doesn't expose them to the programmer.  it's a slightly
confusing issue, obviously, but it's worth noting that a Scheme programmer
who doesn't understand that he's dealing with pointers to objects will be
very confused by the language, and a Scheme programmer who thinks in terms
of pointers will have a hard time writing serious code in in Scheme -- he
wouldn't see the data structure because of all the pointers.

if we work harder, will obsolescence be farther ahead or closer?