[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: CWH at MIT-MC
- From: Gerald R. Barber <JERRYB at MIT-AI>
- Date: Sun ,6 Apr 80 16:38:00 EDT
cc: BUG-LISPM at MIT-MC
Date: 6 April 1980 11:23-EST
From: Carl W. Hoffman <CWH at MIT-MC>
To: BUG-LISPM at MIT-MC
HENRY@MIT-AI 04/05/80 23:09:23 Re: CAR and CDR should send messages
A user program wouldn't
have to know what kind of list it was dealing with, it
could just take CAR and CDR.
This is what I said in my original message.
I think this is very poor.
There are all sorts of objects which may be chained together in a list-like
structure, many of which are more complicated than just a cons. Consider,
for instance, the linking of free chaosnet packets, or the editor's line
objects. Using CAR and CDR to manipulate these lists would be extremely
confusing. Higher level naming conventions are used.
This just argues for higher level abstractions. No one will disagree with you
on that account.
My other objection to this proposal deals with syntax. As long as this
language includes both functional and message passing semantics, there
should be some clear way to distinguish between the two.
Why? You are requiring that the user program know the underlying
representation of the objects it is dealing with. This is poor. As long as
they behave as they should, eg, a car and cdr receiving object behaves like an
ordinary cons, then there is no need for this restriction.
Finally, you should consider transportability. This is almost impossible to
implement in a system without microcoded CAR, whereas (<- X ':CAR), or
better (<- X ':FIRST), is much easier.
CAR is already too smart for non-microcodeable machines.