Flavors (programming language)

Short description: Programming language

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 `:before` and `:after` daemons with the default method combination (called `:daemon`).

## Contents

* 1 Flavors and CLOS features comparison
* 2 Terminology
* 3 References
* 4 Further reading

## 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.
* `DEFFLAVOR` options: `:required-methods`, `:abstract-flavor`, `:mixture`.
* `SEND` function for sending messages.

CLOS offers the following features not found in Flavors:

* Multimethods
* Methods specialized on individual objects (via `EQL`).
* Methods specialized on Common Lisp types (symbol, integer, ...).
* Methods specialized on def-struct types.
* Class slots.

## 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. ↑ Flavors for Allegro CL

* Veitch, Jim (1998). "A History and Description of CLOS". Handbook of Programming Languages, Volume IV: Functional and Logic Programming Languages (1st ed.). Macmillan Technical Publishing. pp. 107–158. ISBN 1-57870-011-6.

## Further reading

* Moon, David A. (June 1986). "Object-Oriented Programming with Flavors". OOPSLA '86. pp. 1–8. doi:10.1145/28697.28698. ISBN 978-0-89791-204-4. https://www.cs.tufts.edu/comp/150FP/archive/david-moon/flavors.pdf. Retrieved 2022-03-17.
* "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

* v
* t
* e

Lisp programming language

Features|

* Automatic storage management
* Conditionals
* Dynamic typing
* Higher-order functions
* Linked lists
* M-expressions (deprecated)
* Read–eval–print loop
* Recursion
* S-expressions
* Self-hosting compiler
* Tree data structures

Object systems|

* Common Lisp Object System (CLOS)
* CommonLoops
* Flavors

Implementations|

| Technical
standard(s)
exists|

| Common
Lisp|

* Allegro Common Lisp
* Armed Bear Common Lisp (ABCL)
* CLISP
* Clozure CL
* CMU Common Lisp (CMUCL)
* Corman Common Lisp
* Embeddable Common Lisp (ECL)
* GNU Common Lisp (GCL)
* LispWorks
* Macintosh Common Lisp
* Mocl
* Movitz
* Poplog
* Steel Bank Common Lisp (SBCL)
* Symbolics Common Lisp

|

Scheme|

* History
* Bigloo
* Chez Scheme
* Chicken
* Gambit
* Game Oriented Assembly Lisp (GOAL)
* Ikarus
* JScheme
* Kawa
* Larceny
* MIT/GNU Scheme
* MultiLisp
* Pocket Scheme
* Racket
* RScheme
* Scheme 48
* SCM
* SIOD
* T
* TinyScheme

ISLISP|

* OpenLisp

Nonstandard|

| Logo|

* MSWLogo
* NetLogo
* StarLogo
* UCBLogo

|

* Arc
* AutoLISP
* BBN LISP
* Clojure
* Dylan (Apple, history)
* Emacs Lisp
* EuLisp
* Franz Lisp, PC-LISP
* Hy
* Interlisp
* Knowledge Engineering Environment
* *Lisp
* LeLisp
* LFE
* Lisp Machine Lisp
* Maclisp
* MDL
* MLisp
* newLISP
* NIL
* PC-LISP
* Picolisp
* Portable Standard Lisp
* RPL
* S-1 Lisp
* SKILL
* Spice Lisp
* Zetalisp

Operating system|

* Common Lisp Interface Manager, McCLIM
* Genera
* Scsh

Hardware|

* Lisp machines
* TI Explorer
* Space-cadet keyboard

Community|

| Standards|

* Scheme Requests for Implementation
* Common Lisp HyperSpec
* X3J13

|

Education|

| Books|

* Common Lisp the Language
* How to Design Programs (HTDP)
* On Lisp
* Practical Common Lisp
* Structure and Interpretation of Computer Programs (SICP)

|

Curriculum|

* ProgramByDesign

Organizations|

* Apple Computer
* Bolt, Beranek and Newman
* Harlequin
* Lucid Inc.
* Massachusetts Institute of Technology (MIT)
* MIT Computer Science and Artificial Intelligence Laboratory (CSAIL)
* Stanford Artificial Intelligence Laboratory
* Symbolics
* University of California, Berkeley
* Xanalys

People|

* Edmund Berkeley
* Daniel G. Bobrow
* William Clinger
* R. Kent Dybvig
* Matthias Felleisen
* Robert Bruce Findler
* Matthew Flatt
* Phyllis Fox
* Paul Graham
* Richard Greenblatt
* Timothy P. Hart
* Louis Hodes
* Mike Levin
* David Luckham
* John McCarthy
* Robert Tappan Morris
* Joel Moses
* David Park
* Steve Russell
* Richard Stallman

Common Lisp|

* Scott Fahlman
* Richard P. Gabriel
* Philip Greenspun (10th rule)
* David A. Moon
* Kent Pitman
* Guy L. Steele Jr.
* Daniel Weinreb

Scheme|

* Shriram Krishnamurthi
* Guy L. Steele Jr.
* Gerald Jay Sussman
* Julie Sussman

Logo|

* Hal Abelson
* Denison Bollay
* Wally Feurzeig
* Brian Harvey
* Seymour Papert
* Mitchel Resnick
* Cynthia Solomon

* Category
* Category
* List

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Flavors (programming language). Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Flavors_(programming_language)&oldid=177188"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template