Difference between revisions of "Publications/verna.18.els"
From LRDE
(One intermediate revision by the same user not shown) | |||
Line 10: | Line 10: | ||
| lrdenewsdate = 2018-03-25 |
| lrdenewsdate = 2018-03-25 |
||
| lrdepaper = http://www.lrde.epita.fr/dload/papers/verna.18.els.pdf |
| lrdepaper = http://www.lrde.epita.fr/dload/papers/verna.18.els.pdf |
||
+ | | abstract = In traditional object-oriented languages, the dynamic dispatch algorithm is hardwired: for every polymorphic call, only the most specific method is used. textscClos |
||
| type = inproceedings |
| type = inproceedings |
||
| id = verna.18.els |
| id = verna.18.els |
||
− | | identifier = |
+ | | identifier = doi:10.5281/zenodo.3247610 |
| bibtex = |
| bibtex = |
||
@InProceedings<nowiki>{</nowiki> verna.18.els, |
@InProceedings<nowiki>{</nowiki> verna.18.els, |
||
Line 19: | Line 20: | ||
booktitle = <nowiki>{</nowiki>11th European Lisp Symposium<nowiki>}</nowiki>, |
booktitle = <nowiki>{</nowiki>11th European Lisp Symposium<nowiki>}</nowiki>, |
||
isbn = 9782955747421, |
isbn = 9782955747421, |
||
+ | doi = <nowiki>{</nowiki>10.5281/zenodo.3247610<nowiki>}</nowiki>, |
||
year = 2018, |
year = 2018, |
||
month = apr, |
month = apr, |
||
− | address = <nowiki>{</nowiki>Marbella, Spain<nowiki>}</nowiki> |
+ | address = <nowiki>{</nowiki>Marbella, Spain<nowiki>}</nowiki>, |
+ | abstract = <nowiki>{</nowiki>In traditional object-oriented languages, the dynamic |
||
+ | dispatch algorithm is hardwired: for every polymorphic |
||
+ | call, only the most specific method is used. \textsc<nowiki>{</nowiki>Clos<nowiki>}</nowiki>, |
||
+ | the Common Lisp Object System, goes beyond the traditional |
||
+ | approach by providing an abstraction known as \emph<nowiki>{</nowiki>method |
||
+ | combinations<nowiki>}</nowiki>: when several methods are applicable, it is |
||
+ | possible to select several of them, decide in which order |
||
+ | they will be called, and how to combine their results, |
||
+ | essentially making the dynamic dispatch algorithm |
||
+ | user-programmable.\par Although a powerful abstraction, |
||
+ | method combinations are under-specified in the Common Lisp |
||
+ | standard, and the \textsc<nowiki>{</nowiki>Mop<nowiki>}</nowiki>, the Meta-Object Protocol |
||
+ | underlying many implementations of \textsc<nowiki>{</nowiki>Clos<nowiki>}</nowiki>, worsens |
||
+ | the situation by either contradicting it or providing |
||
+ | unclear protocols. As a consequence, too much freedom is |
||
+ | granted to conforming implementations. The exact or |
||
+ | intended behavior of method combinations is unclear and not |
||
+ | necessarily coherent with the rest of \textsc<nowiki>{</nowiki>Clos<nowiki>}</nowiki>.\par In |
||
+ | this paper, we provide a detailed analysis of the problems |
||
+ | posed by method combinations, the consequences of their |
||
+ | lack of proper specification in one particular |
||
+ | implementation, and a \textsc<nowiki>{</nowiki>Mop<nowiki>}</nowiki>-based extension called |
||
+ | \emph<nowiki>{</nowiki>method combinators<nowiki>}</nowiki>, aiming at correcting these |
||
+ | problems and possibly offer new functionality.<nowiki>}</nowiki> |
||
<nowiki>}</nowiki> |
<nowiki>}</nowiki> |
||
Latest revision as of 10:44, 18 June 2019
- Authors
- Didier Verna
- Where
- 11th European Lisp Symposium
- Place
- Marbella, Spain
- Type
- inproceedings
- Projects
- Climb
- Keywords
- Software Engineering
- Date
- 2018-03-25
Abstract
In traditional object-oriented languages, the dynamic dispatch algorithm is hardwired: for every polymorphic call, only the most specific method is used. textscClos
Documents
Bibtex (lrde.bib)
@InProceedings{ verna.18.els, author = {Didier Verna}, title = {Method Combinators}, booktitle = {11th European Lisp Symposium}, isbn = 9782955747421, doi = {10.5281/zenodo.3247610}, year = 2018, month = apr, address = {Marbella, Spain}, abstract = {In traditional object-oriented languages, the dynamic dispatch algorithm is hardwired: for every polymorphic call, only the most specific method is used. \textsc{Clos}, the Common Lisp Object System, goes beyond the traditional approach by providing an abstraction known as \emph{method combinations}: when several methods are applicable, it is possible to select several of them, decide in which order they will be called, and how to combine their results, essentially making the dynamic dispatch algorithm user-programmable.\par Although a powerful abstraction, method combinations are under-specified in the Common Lisp standard, and the \textsc{Mop}, the Meta-Object Protocol underlying many implementations of \textsc{Clos}, worsens the situation by either contradicting it or providing unclear protocols. As a consequence, too much freedom is granted to conforming implementations. The exact or intended behavior of method combinations is unclear and not necessarily coherent with the rest of \textsc{Clos}.\par In this paper, we provide a detailed analysis of the problems posed by method combinations, the consequences of their lack of proper specification in one particular implementation, and a \textsc{Mop}-based extension called \emph{method combinators}, aiming at correcting these problems and possibly offer new functionality.} }