Flavors (programming language) explained

Flavors,[1] an early object-oriented extension to Lisp developed by Howard Cannon at the MIT Artificial Intelligence Laboratory for the Lisp machine and its programming language Lisp Machine Lisp, was the first programming language to include mixins.[2] Symbolics used it for its Lisp machines, and eventually developed it into New Flavors; both the original and new Flavors were message passing OO models. It was hugely influential in the development of the Common Lisp Object System (CLOS).[3]

Implementations of Flavors are also available for Common Lisp.[4]

New Flavors replaced message sending with calling generic functions.

Flavors offers and daemons with the default method combination (called).

Flavors and CLOS features comparison

Flavors offers a few features not found in CLOS:

CLOS offers the following features not found in Flavors:

Terminology

Flavors terminology! Flavors !! CLOS
flavor class
component flavor superclass
dependent flavor subclass
local component flavor direct superclass
local dependent flavor direct subclass
generic function generic function
combined method effective method
method option method qualifier
instance instance
instance variable slot
ordering of flavor components class precedence list

References

  1. Howard Cannon, Flavors: A non-hierarchical approach to object-oriented programming, Symbolics Inc., 1982
  2. pg 46 of Thompson, C. W., Ross, K. M., Tennant, H. R., and Saenz, R. M. 1983. "Building Usable Menu-Based Natural Language Interfaces To Databases". In Proceedings of the 9th international Conference on Very Large Data Bases (October 31 – November 2, 1983). M. Schkolnick and C. Thanos, Eds. Very Large Data Bases. Morgan Kaufmann Publishers, San Francisco, CA, 43–55.
  3. "Symbolics (1985) was using New Flavors (a message-sending model, like Java today), Xerox was using CommonLoops, Lisp Machine Incorporated was using Object Lisp (Bobrow, 1986), and Hewlett-Packard proposed using Common Objects (Kempf, 1987). The groups vied with each other in the context of the standardization effort going on for Common Lisp at the time and finally settled on a standard based on CommonLoops and New Flavors." p. 108 of Veitch 1998.
  4. http://www.franz.com/support/documentation/10.1/doc/flavors.htm Flavors for Allegro CL

Further reading