[comp.lang.lisp] Lisp Object Systems Primer

kempf@hplabsz.UUCP (11/20/87)

Some recent postings to this group indicate that there may be some
confusion about the different Lisp object systems. Practically everybody
knows what Flavors(tm?) is, but what about all the others? Here is
an attempt to shed some light on the other object systems:

CommonLoops-An object-oriented language designed at Xerox PARC. Uses
generic functions, like New Flavors(tm?) but has no method combination
and features multiple argument dispatching (multimethods). Also has
a metaclass kernel, for implementing other object oriented languages
(see below). Reference: SIGPLAN Notices, 21(11), Sept.-Oct. 1986, pg. 17-29.

Portable CommonLoops (PCL)-a portable implementation of CommonLoops done at
Xerox PARC. Up until about Feb. 1987, PCL was CommonLoops, but now
it is tracking the specification of the Common Lisp Object System
(see below for more information).

CommonObjects-an object-oriented Lisp extension designed at HP Labs.
Features strict encapsulation (including restricting access of superclass
internals from subclasses) and a Flavors(tm?) like syntax for method
sends. Originally implemented and available through the HP Common Lisp
product. Reference: SIGPLAN Notices, 21(10), Oct., 1986, pp. 19-28,
also a language spec is available from cool@hplabs.hp.com as document
ATC-85-01.

CommonObjects on CommonLoops (COOL)- a portable implementation of CommonObjects
on the PCL metaclass kernel. It was distributed via USENET comp.sources.unix
in August, 1987, along with the PCL on which it runs, and is available
from a USENET archive machine.

Common Lisp Object System-Under the auspices of the ANSI X3J13 Common Lisp
Standardization Committee, a subcommittee to design a new object-oriented
Common Lisp extension was formed. The design is based on features of
CommonLoops and New Flavors. Currently, a revised language specification
is being prepared which reflects feedback from the full ANSI X3J13 committee
and from users of the prototype PCL implementation. When accepted by the
full committee, CLOS (pronounced "klos") will be the offical Lisp standard
object-oriented programming language. A copy of the original draft 
specification is available from ANSI in New York (sorry, no address, try
calling) as ANSI X3J13 documents 87-002 and 87-003. As mentioned above
the PCL implementation is evolving to match the CLOS specification.

Other object systems-There are a number of other object systems of which
one hears. ObjectLisp was one of the original 4 systems being considered
as the ANSI standard. CommonOrbit and ObjTalk are European object systems,
the former from the Neatherlands and the latter from Germany (Univ. Stuttgart).
As far as I know, none of these has been made widely available in a portable
version.

I hope this clears up any misconceptions about the relationship between
the various object systems for Common Lisp. 

		Jim Kempf	kempf@hplabs.hp.com


PS: In response to a posting last summer, a number of people got the
87-002 documents electronically and were unable to format them because
of the lack of a TeX macro file. The revised language spec (which should
be available sometime after the first of the year) will have a portable
macro file, to make electronic distribution easier. Thank you for your
patience, and apologies for the length of time involved in making this
happen. In the interim, if you are interested in obtaining the original
87-002 spec, you might want to give ANSI a call.