[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

on the issue of the "ATOMness" of hunks



    From: Peter Szolovits <PSZ>

    I have a small quarrel with Alan Bawden's statement that "hunks never
    being atoms in Maclisp" is a universally-agreed bug.  There are indeed
    useful structures that one would like to build in Lisp that act as CONS
    cells (i.e., CAR and CDR are applicable), but that can have further
    structure.  I have sorely missed such objects in Lisp Machine Lisp and
    NIL, where flavor-instances are always atomic, when I wanted to build
    Brand X (interned "list structure" and universal property lists).  In
    Maclisp, I could do this using hunks, though even that was not
    completely right because I wanted to be able to disallow RPLACA and
    RPLACD while allowing CAR and CDR, and this was hard, given the hunk
    abstraction.  I would, however, love to have non-atomic flavor-instances 

The MIT lisp machine system makes some attempt to "support" this sort
of thing, by sending :CAR, :CDR, etc messages to instances. The result
is that you get an error about an unclaimed message, rather than one
about an attempt to take the car of a non-nil atom. LISTP and CONSP
both still return NIL when applied to an instance. The way to get RPLACA
(or SETF of CAR), etc to not work is simply to not define methods for doing
these operations...

Is is not really clear to me what the value of such is, unless you get tired
of typing too many "(SEND"'s.