arXiv.itsnick.co

an independent field guide to 23 million papers from arXiv & OpenAlex — not affiliated with arXiv.org

Computer Science · Hardware and Architecture

Array Operators Using Multiple Dispatch Array Operators Using Multiple Dispatch A design methodology for array implementations in dynamic languages

Jeff Bezanson, Jiahao Chen, Stefan Karpinski, Viral Shah, Alan Edelman

See on the map

Abstract

Arrays are such a rich and fundamental data type that they tend to be built into a language, either in the compiler or in a large low-level library. Defining this functionality at the user level instead provides greater flexibility for application domains not envisioned by the language designer. Only a few languages, such as C++ and Haskell, provide the necessary power to define n-dimensional ar-rays, but these systems rely on compile-time abstraction, sacrificing some flexibility. In contrast, dynamic languages make it straightfor-ward for the user to define any behavior they might want, but at the possible expense of performance. As part of the Julia language project, we have developed an ap-proach that yields a novel trade-off between flexibility and compile-time analysis. The core abstraction we use is multiple dispatch. We have come to believe that while multiple dispatch has not been es-pecially popular in most kinds of programming, technical comput-ing is its killer application. By expressing key functions such as array indexing using multi-method signatures, a surprising range of behaviors can be obtained, in a way that is both relatively easy to write and amenable to compiler analysis. The compact factoring of concerns provided by these methods makes it easier for user-defined types to behave consistently with types in the standard li-brary.

More like this