Skip to Main content Skip to Navigation
New interface
Reports (Research report)

An Experiment with lexically-bound extension methods for a dynamic language

Abstract : An extension method is a method declared in a package other than the package of its host class. Thanks to extension methods, developers can adapt classes they do not own to their needs: adding methods to core classes is a typical use case. This is particularly useful for adapting software and therefore increasing reusability. In most dynamically-typed languages, extension methods are globally visible. Because any developer can define extension methods for any class, naming conflicts occur: if two developers define an extension method with the same signature in the same class, only one extension method is visible and overwrites the other. Similarly, if two developers each define an extension method with the same name in a class hierarchy, one overrides the other. Existing solutions typically rely on a dedicated and slow method lookup algorithm to resolve conflicts at runtime. In this article, we present a model of scoped extension methods that minimizes accidental overrides and we present an implementation in Pharo that incurs little performance overhead. This implementation is based on lexical scope and hierarchy-first strategy for extension scoping.
Document type :
Reports (Research report)
Complete list of metadata
Contributor : Guillermo Polito Connect in order to contact the contributor
Submitted on : Monday, March 6, 2017 - 2:01:28 PM
Last modification on : Tuesday, December 6, 2022 - 12:42:13 PM
Long-term archiving on: : Wednesday, June 7, 2017 - 2:05:10 PM


Files produced by the author(s)


  • HAL Id : hal-01483756, version 1


Stéphane Ducasse, Luc Fabresse, Guillermo Polito, Camille Teruel. An Experiment with lexically-bound extension methods for a dynamic language. [Research Report] Inria Lille - Nord Europe. 2017. ⟨hal-01483756⟩



Record views


Files downloads