Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Flavors (programming language)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Programming language}} {{Use American English|date=March 2021}} {{Use mdy dates|date=March 2021}} '''Flavors'''<ref>Howard Cannon, [http://www.softwarepreservation.org/projects/LISP/MIT/nnnfla1-20040122.pdf Flavors: A non-hierarchical approach to object-oriented programming], Symbolics Inc., 1982</ref> is an early [[object-oriented programming|object-oriented]] extension to [[Lisp programming language|Lisp]] developed by [[Howard Cannon (programmer)|Howard Cannon]] at the [[MIT Artificial Intelligence Laboratory]] for the [[Lisp machine]] and its programming language [[Lisp Machine Lisp]]. It is notable as the first programming language to include [[mixins]].<ref>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.</ref> [[Symbolics]] used it for its Lisp machines, and eventually developed it into '''New Flavors'''; both the original and new Flavors were [[message passing|message-passing]] OO models. It was hugely influential in the development of the [[Common Lisp Object System]] (CLOS).<ref>"[[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.</ref> Implementations of Flavors are also available for [[Common Lisp]].<ref>[http://www.franz.com/support/documentation/10.1/doc/flavors.htm Flavors for Allegro CL]</ref> New Flavors replaced message sending with calling [[generic function]]s. Flavors offers {{code|:before}} and {{code|:after}} daemons with the default method combination (called {{code|:daemon}}). == 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. * {{code|DEFFLAVOR}} options: {{code|:required-methods}}, {{code|:abstract-flavor}}, {{code|:mixture}}. * {{code|SEND}} function for sending messages. CLOS offers the following features not found in Flavors: * Multimethods * Methods specialized on individual objects (via {{code|EQL}}). * Methods specialized on Common Lisp types (symbol, integer, ...). * Methods specialized on def-struct types. * Class slots. ==Terminology== {| class="wikitable" |+ 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== <references/> * {{cite book |last1=Veitch |first1=Jim |date=1998 |chapter=A History and Description of CLOS |editor-last1=Salus |editor-first1=Peter H. |editor-link1=Peter H. Salus |title=Handbook of Programming Languages, Volume IV: Functional and Logic Programming Languages |edition=1st |pages=107β158 |publisher=Macmillan Technical Publishing |isbn=1-57870-011-6}} ==Further reading== * {{cite conference |last1=Moon |first1=David A. |author-link1=David A. Moon |date=June 1986 |title=Object-Oriented Programming with Flavors |book-title=Conference proceedings on Object-oriented Programming Systems Languages and Applications |pages=1β8 |isbn=978-0-89791-204-4 |conference=[[OOPSLA]] '86 |doi=10.1145/28697.28698 |s2cid=17150741 |url=https://www.cs.tufts.edu/comp/150FP/archive/david-moon/flavors.pdf |access-date=2022-03-17}} * "Flavors, Technical Report", ''MIT Artificial Intelligence Laboratory'', Cambridge (Mass.), 1980 * Daniel Weinreb and [[David A. Moon]], [https://dspace.mit.edu/handle/1721.1/5700 "Flavors: Message Passing in the Lisp Machine"], A.I. Memo No. 602, November 1980, MIT AI Lab {{Lisp programming language}} [[Category:Lisp programming language family]] [[Category:Common Lisp]] [[Category:Object-oriented programming languages]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite book
(
edit
)
Template:Cite conference
(
edit
)
Template:Code
(
edit
)
Template:Lisp programming language
(
edit
)
Template:Short description
(
edit
)
Template:Use American English
(
edit
)
Template:Use mdy dates
(
edit
)