[comp.sys.mac.programmer] Coral Allegro Common Lisp objects

ewing@yale.UUCP (ken ewing) (03/18/88)

Concerning Coral Software's Allegro Common Lisp support for object oriented
programming:  It presently doesn't support CLOS, but does have its own
oops called Object Lisp, used primarily for doing the user interface stuff --
for which it is EXTREMELY useful.  OL supports multiple inheritance, but of
bindings, not merely values (ie instances have access to ancestor's bindings,
thus if the instance changes its value, the value for the ancestor changes as
well.  Compare this to inheriting merely values: if an instance changes its
value, then the ancestor's value remains the same -- the instance shadows
the ancestor's value with its own.).  I don't know whether other oops'
work inheritance on bindings, but I do know that this has turned out to be
extremely useful to me in my work.  Another useful feature is that OL really
has only classes and subclasses, so that any useful "instance" can at some
later time spawn a subclass without incurring any conceptual-gymnastics
penalties.  Finally, OL classes are recognized by the common lisp function
typep (but not by typecase), needless to say, another very useful feature.

Concerning CLOS:  Version 1.0's manual seemed to indicate that Coral would
scrap its OL as soon as CLOS settled down.  This is supported by the fact
(explicitly mentioned in version 1.1's manual) that OL hadn't been suberbly
optimized for speed (this isn't a euphemism for SLOW, OL is fast enough to do
complex Mac interface stuff), suggesting that Coral thought of it as merely
a temporary measure.  Now it appears that Allegro CL's users have prevailed
upon Coral to keep OL around, because the manual for version 1.1 claims that
Coral will implement OL on top of CLOS when CLOS arrives.  A good move in my
opinion.

ken ewing   ewing@cs.yale.edu   ewing@yalecs.bitnet   yale!ewing

PS: I work for Yale, and I haven't let them take responsability for
    anything I say.  I'm only connected to Coral as a satisfied customer.