From: Aemon on
I'm doing a bit of research on the history of generic functions /
multimethods / multiple dispatch systems. I was wondering if anyone
could give me pointers on good places to look.

I've already traced the idea back to OOPLSA 1986.
Flavors
http://portal.acm.org/citation.cfm?id=28697.28698

and CommonLoops
http://portal.acm.org/citation.cfm?id=28697.28700&jmp=cit&coll=GUIDE&dl=GUIDE&CFID=57779486&CFTOKEN=37115212#CIT

Did the idea originate with object systems in Lisp? And by 'the idea'
I mean, families of methods that are dispatched according to some
runtime characteristic of all the arguments.

Many thanks,
Aemon
From: Vassil Nikolov on

On Wed, 14 Oct 2009 18:01:22 -0700 (PDT), Aemon <aemoncannon(a)gmail.com> said:
> ...
> I've already traced the idea back to OOPLSA 1986.
> Flavors
> http://portal.acm.org/citation.cfm?id=28697.28698

<http://www.softwarepreservation.org/projects/LISP/>

has some more references about Flavors (including one to the
A.I. Memo No. 602 of 1980).

---Vassil.


--
"Even when the muse is posting on Usenet, Alexander Sergeevich?"
From: Aemon on
On Oct 14, 9:14 pm, Vassil Nikolov <vniko...(a)pobox.com> wrote:
> On Wed, 14 Oct 2009 18:01:22 -0700 (PDT), Aemon <aemoncan...(a)gmail.com> said:
>
> > ...
> > I've already traced the idea back to OOPLSA 1986.
> > Flavors
> >http://portal.acm.org/citation.cfm?id=28697.28698
>
>     <http://www.softwarepreservation.org/projects/LISP/>
>
>   has some more references about Flavors (including one to the
>   A.I. Memo No. 602 of 1980).
>
>   ---Vassil.
>
> --
> "Even when the muse is posting on Usenet, Alexander Sergeevich?"

Thanks for the link, Vassil. The memo was very interesting. In
particular, there is no mention of multimethods.
Methods are defined over a single 'flavor' (analogous to a class).

One line down on the same page: David Moon and Daniel Weinreb.
Introduction to Flavors. 1985

This seems to be largely the same text as the memo from 1980. Also
makes no mention of multimethods, sticking to
the message passing metaphor:
"When a message is sent to an object, a function therefore must be
found to
handle the message. The two data used to figure out which function to
call are
the type of the object, and the name of the message."

From: Rainer Joswig on
In article
<7fb3bef7-b734-456c-b038-bb5a19243f65(a)s21g2000prm.googlegroups.com>,
Aemon <aemoncannon(a)gmail.com> wrote:

> I'm doing a bit of research on the history of generic functions /
> multimethods / multiple dispatch systems. I was wondering if anyone
> could give me pointers on good places to look.
>
> I've already traced the idea back to OOPLSA 1986.
> Flavors
> http://portal.acm.org/citation.cfm?id=28697.28698
>
> and CommonLoops
> http://portal.acm.org/citation.cfm?id=28697.28700&jmp=cit&coll=GUIDE&dl=GUIDE&CFID=57779486&CFTOKEN=37115212#CIT
>
> Did the idea originate with object systems in Lisp? And by 'the idea'
> I mean, families of methods that are dispatched according to some
> runtime characteristic of all the arguments.
>
> Many thanks,
> Aemon



Flavors was very early with things like multiple-inheritance and mixins. It was
a message passing OO system.

Loops at Xerox was also very early on the scene. (see the Loops Manual for its extensive
capabilities).

CommonLoops was later influenced by Loops and Flavors. Common Lisp
added Multimethods and Generic Functions.

New Flavors added 'generic functions' with single dispatch to Flavors.

CLOS combines various features of CommonLoops and New Flavors. The first CLOS
implementation was based on Xerox' 'Portable CommonLoops' (PCL) code.

--
http://lispm.dyndns.org/
From: Pascal Costanza on
Aemon wrote:
> I'm doing a bit of research on the history of generic functions /
> multimethods / multiple dispatch systems. I was wondering if anyone
> could give me pointers on good places to look.
>
> I've already traced the idea back to OOPLSA 1986.
> Flavors
> http://portal.acm.org/citation.cfm?id=28697.28698
>
> and CommonLoops
> http://portal.acm.org/citation.cfm?id=28697.28700&jmp=cit&coll=GUIDE&dl=GUIDE&CFID=57779486&CFTOKEN=37115212#CIT
>
> Did the idea originate with object systems in Lisp? And by 'the idea'
> I mean, families of methods that are dispatched according to some
> runtime characteristic of all the arguments.

This idea doesn't originate with Lisp, but with EL1 (which looks
somewhat like a variant of Pascal, or so).

See http://doi.acm.org/10.1145/360980.360992


Pascal

--
My website: http://p-cos.net
Common Lisp Document Repository: http://cdr.eurolisp.org
Closer to MOP & ContextL: http://common-lisp.net/project/closer/