Atsushi Igarashi,
Mirko Viroli
ACM SIGPLAN Notices 42(10), pages 113-132
2007
Much recent work in the design of object-oriented programming languages has been focusing on identifying suitable features to support so-called scalable extensibility, where the usual extension mechanism by inheritance works in different scales of software components?that is, classes, groups of classes, groups of groups and so on. Its typing issues has usually been addressed by means of dependent type systems, where nested types are seen as properties of objects. In this work, we seek instead for a different solution, which can be more easily applied to Java-like languages, in which nested types are considered properties of classes.
We introduce the mechanism of variant path types, which provide a flexible means to express intra-group relationship (among classes) that has to be preserved through extension.
In particular, improving and extending existing works on groups and exact types, we feature the new notions of exact and inexact qualifications, providing rich abstractions to express various kinds of set of objects, with a flexible sub typing scheme.We formalize a safe type system for variant path types on top of Featherweight Java. Our development results in a complete solution for scalable extensibility, similarly to previous attempts based on dependent type systems.
keywords
Generics, parametric polymorphism, variant types, Featherweight Java