File(s) stored somewhere else
Please note: Linked content is NOT stored on Open Access Te Herenga Waka-Victoria University of Wellington and we can't guarantee its availability, quality, security or accept any liability.
Mμl: The Power of Dynamic Multi-Methods
journal contribution
posted on 2021-08-21, 05:37 authored by Isaac Oscar GarianoIsaac Oscar Gariano, Marco ServettoMarco ServettoMulti-methods are a straightforward extension of traditional (single) dynamic
dispatch, which is the core of most object oriented languages. With
multi-methods, a method call will select an appropriate implementation based on
the values of multiple arguments, and not just the first/receiver. Language
support for both single and multiple dispatch is typically designed to be used
in conjunction with other object oriented features, in particular classes and
inheritance. But are these extra features really necessary?
M{\mu}l is a dynamic language designed to be as simple as possible but still
supporting flexible abstraction and polymorphism. M{\mu}l provides only two
forms of abstraction: (object) identities and (multi) methods. In M{\mu}l
method calls are dispatched based on the identity of arguments, as well as what
other methods are defined on them. In order to keep M{\mu}ls design simple,
when multiple method definitions are applicable, the most recently defined one
is chosen, not the most specific (as is conventional with dynamic dispatch).
In this paper we show how by defining methods at runtime, we obtain much of
the power of classes and meta object protocols, in particular the ability to
dynamically modify the state and behaviour of 'classes' of objects.