APICe » Publications » Class » PolymorphismOoplsa2007

Variant path types for scalable extensibility

Atsushi Igarashi, Mirko Viroli
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
ACM SIGPLAN Notices 42(10), pages 113-132, 2007.
Richard P. Gabriel, David F. Bacon, Cristina Videira Lopes, Guy L. Steele Jr. (eds.), ACM, New York, NY, USA
Proceedings of the 22nd annual ACM SIGPLAN Conference on Object Oriented Programming Systems, Languages and Applications (OOPSLA '07), Montreal, Quebec, Canada
@article{PolymorphismOoplsa2007,
	issn = {0362-1340},
	volume = 42,
	title = {Variant path types for scalable extensibility},
	address = {New York, NY, USA},
	publisher = {ACM},
	number = 10,
	doi = {10.1145/1297027.1297037},
	keywords = {Generics, parametric polymorphism, variant types, Featherweight Java},
	isbn = {978-1-59593-786-5},
	note = {Proceedings of the 22nd annual ACM SIGPLAN Conference on Object Oriented Programming Systems, Languages and Applications (OOPSLA '07), Montreal, Quebec, Canada},
	editor = {Gabriel, Richard P. and Bacon, David F. and Videira Lopes, Cristina and  Steele, Jr., Guy L.},
	year = 2007,
	pages = {113--132},
	journal = {ACM SIGPLAN Notices},
	author = {Igarashi, Atsushi and Viroli, Mirko}}