Path: utzoo!mnetor!uunet!ncc!alberta!ubc-cs!faculty.cs.ubc.ca!manis From: manis@faculty.cs.ubc.ca (Vince Manis) Newsgroups: comp.lang.lisp Subject: Re: Why ``Flavors'' ? Message-ID: <2105@ubc-cs.UUCP> Date: 20 Apr 88 17:20:29 GMT References: <442@crin.crin.fr> <563@m10ux.UUCP> Sender: nobody@ubc-cs.UUCP Reply-To: manis@faculty.cs.ubc.ca (Vince Manis) Organization: UBC Department of Computer Science, Vancouver, B.C., Canada Lines: 31 In article <563@m10ux.UUCP> rgr@m10ux.UUCP (Duke Robillard) writes: >There was this Ice Cream shop in Cambridge called Steve's. (It's now >a big ice cream company, but Steve doesn't work there anymore. I think >he opened a place across the street) Anyway, when you went to Steve's >you got some VANILLA ice cream and then added MIXINS (like chocolate >flavoring or fruit flavoring or whatever) to make the FLAVOR that you >really wanted. The Gosling Emacs manual remarks that search expressions come in two flavours: vanilla and regular. Rather more seriously, flavours and similar systems (such as Scoops) are a reaction against the strict class-inheritance philosophy which traces its origins back to Simula. Whereas Simula and Smalltalk have a fairly strict tree-structure for inheritance (barring the peculiar things involved with metaclasses), a flavour-based system is more like a dag: it's much easier to have classes which are hybrids of two others (via mixins). While this enrages advocates of strict typing, it is very much more usable for real-world situations. Just as there is no "canonical" flavour called chocolate amaretto bubble gum (yuck!), but you can blend your own, so too in a flavour system you can construct the object classes you want, by blending your own. Vincent Manis | manis@cs.ubc.ca The Invisible City of Kitezh | manis@cs.ubc.cdn Department of Computer Science | manis@ubc.csnet University of British Columbia | {ihnp4!alberta,uw-beaver,uunet}! | ubc-cs!manis <>