Flavors is an early
object-oriented
Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
extension to
Lisp
Lisp (historically LISP, an abbreviation of "list processing") is a family of programming languages with a long history and a distinctive, fully parenthesized Polish notation#Explanation, prefix notation.
Originally specified in the late 1950s, ...
developed by
Howard Cannon
Howard Walter Cannon (January 26, 1912 – March 5, 2002) was an American politician from Nevada. A member of the Democratic Party (United States), Democratic Party, he served four terms in the United States Senate representing Nevada from 1959 ...
at the
MIT Artificial Intelligence Laboratory
Computer Science and Artificial Intelligence Laboratory (CSAIL) is a research institute at the Massachusetts Institute of Technology (MIT) formed by the 2003 merger of the Laboratory for Computer Science (LCS) and the Artificial Intelligence L ...
for the
Lisp machine and its programming language
Lisp Machine Lisp. It is notable as the first programming language to include
mixins.
Symbolics
Symbolics, Inc., is a privately held American computer software maker that acquired the assets of the former manufacturing company of the identical name and continues to sell and maintain the Open Genera Lisp (programming language), Lisp sy ...
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
The Common Lisp Object System (CLOS) is the facility for object-oriented programming in American National Standards Institute, ANSI Common Lisp. CLOS is a powerful dynamic programming language, dynamic object system which differs radically from t ...
(CLOS).
Implementations of Flavors are also available for
Common Lisp
Common Lisp (CL) is a dialect of the Lisp programming language, published in American National Standards Institute (ANSI) standard document ''ANSI INCITS 226-1994 (S2018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperli ...
.
Flavors for Allegro CL
/ref>
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:
* Wrappers
* Automatic lexical access to slots using variables within methods.
* Internal flavor functions, macros and substs.
* Automatically generated constructors.
* options: , , .
* function for sending messages.
CLOS offers the following features not found in Flavors:
* Multimethods
* Methods specialized on individual objects (via ).
* Methods specialized on Common Lisp types (symbol, integer, ...).
* Methods specialized on def-struct types.
* Class slots.
Terminology
References
*
Further reading
*
* "Flavors, Technical Report", ''MIT Artificial Intelligence Laboratory'', Cambridge (Mass.), 1980
* Daniel Weinreb and David A. Moon
"Flavors: Message Passing in the Lisp Machine"
A.I. Memo No. 602, November 1980, MIT AI Lab
{{Lisp programming language
Lisp programming language family
Common Lisp
Object-oriented programming languages