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.