Re: RM and abstract syntax trees

From: David Cressey <>
Date: Wed, 31 Oct 2007 10:23:39 GMT
Message-ID: <LIYVi.3472$p%.201_at_trndny03>

"David BL" <> wrote in message
> On Oct 31, 10:06 am, paul c <> wrote:
> > David BL wrote:
> > > On Oct 31, 2:46 am, paul c <> wrote:
> > >> Okay, from your original post:
> >
> > >> "So RM is forced
> > >> to expose the equivalent of pointers directly in the representation.
> > >> Furthermore, the RM has no mechanism for hiding these pointers or
> > >> giving the user an interface that promotes the idea that a node
> > >> logically represents a value."
> >
> > >> Where does RM ever mention pointers? Eg., What are the pointer
> > >> operations that RM supports?
> >
> > > I'm associating a "pointer" with the idea to give a thing (like a node
> > > of an AST) some meaningless identifier, and using that identifier
> > > elsewhere as a means to uniquely reference that thing. With that
> > > *analogy*, RM performs a pointer dereference when performing a natural
> > > join.
> > > ...
> >
> > Sorry if this seems pedantic (which it is) but RM references things
> > uniquely with values.


> I have no problem with you being pedantic and like your comments!

> Yes RM references things uniquely with values, but pointers are "value
> types"! Note the distinction between "pointer-type", "pointer-
> variable", and "pointer-value". When a pointer-variable is assigned
> a pointer-value, the object being referenced only depends on the
> pointer-value.

> If you want to be pedantic, I would say it has more to do with the
> fact that pointer types have a dereference operator, whereas surrogate
> ids in RM do not. But as I said, I was only drawing an analogy with
> pointers.

> Note that each time a join is used to navigate from parent node to
> child node in an AST, we will typically only get a single tuple in
> the join result. This follows from the integrity constraints (that a
> node must be *exclusive or* a variable, number, addition node etc),
> but more easily can be understood using the analogy with a pointer
> dereference. The set level manipulation capability of RM (one of its
> great virtues) is not being utilised.

> In the end I'm more interested in whether you agree with the
> conclusion : that RM is ill-suited to represent ASTs.

In this whole discussion, I have a big problem understanding what is meant by "the equivalent of pointers". A pointer is NOT an arbitrary meaningless identifier. A pointer is an address. If you assign an arbitrary meaningless identifier to an object for reference purposes, that is NOT the same thing as referencing the object via a pointer.

If you need the concept of arbitrary meaningless identifier in order to make a point about how RM represents trees, go ahead. Just don't call them "pointers" and don't assert that they are the quivalent of pointers when they are not.
> Received on Wed Oct 31 2007 - 11:23:39 CET

Original text of this message