Open Access Te Herenga Waka-Victoria University of Wellington
Browse

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 Servetto
Multi-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.

History

Preferred citation

Gariano, I. O. & Servetto, M. (2019). Mμl: The Power of Dynamic Multi-Methods. http://arxiv.org/abs/1910.00709v1

Publication date

2019-10-02

Usage metrics

    Journal articles

    Categories

    No categories selected

    Keywords

    Exports

    RefWorks
    BibTeX
    Ref. manager
    Endnote
    DataCite
    NLM
    DC