We present an enhanced form of untyped object-based inheritance for classless languages, as implemented in our Delta language, comparing to the prevalent practices of delegation and embedding. Through a case scenario we reveal a design flaw of delegation that damages polymorphism and extensibility. Then, we show why embedding is impractical for object-based uninheritance (undoing inheritance on individual objects) and non-monotonic object evolution (dynamically adding or removing object members). We introduce dynamic object trees, adopting the metaphoric notions of inheritance from class-based languages, without compromising the compositional flexibility of untyped inheritance. We implement inherit and uninherit as library functions, discussing how our member lookup algorithm preserves monotonicity. Finally, we show that if prototypes are prototypical objects they may break their own invariant. To this end, we propose class objects as a more precise metaphor, implementing in the Delta language a function for dynamic mixin composition of class objects.
Note: Due to the typographical sophistication of this article, no HTML version is available. Please use the PDF version.
About the author
Anthony Savidis: "An enhanced form of dynamic untyped object-based inheritance", in Journal of Object Technology, vol. 7, no. 4, May-June 2008, pp. 101-122 http://www.jot.fm/issues/issue_2008_05/article2/