Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/1297027.1297037acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
Article

Variant path types for scalable extensibility

Published: 21 October 2007 Publication History

Abstract

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 bemore easily applied to Java-like languages, in which nested types are considered properties of classe.
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 subtyping scheme. We formalize a safe type system for variant path types on top of Feather weight Java. Our development results in a complete solution for scalable extensibility, similarly to previous attempts based on dependent type systems.

References

[1]
David Aspinall and Martin Hofmann. Dependent types. In Benjamin C. Pierce, editor, Advanced Topics in Types and Programming Languages, chapter 2, pages 45--86. The MIT Press, 2005.
[2]
Kim B. Bruce. A paradigmatic object-oriented programming language: Design, static typing and semantics. Journal of Functional Programming, 4(2):127--206, April 1994. Preliminary version in POPL 1993, under the title ``Safe type checking in a statically typed object-oriented programming language''.
[3]
Kim B. Bruce. Some challenging typing issues in object-oriented languages. In Proceedings of Workshop on Object-Oriented Development (WOOD'03), volume 82 of Electronic Notes in Theoretical Computer Science, 2003.
[4]
Kim B. Bruce and J. Nathan Foster. LOOJ: Weaving LOOM into Java. In Proceedings of European Conference on Object-Oriented Programming (ECOOP2004), volume 3086 of Lecture Notes on Computer Science, Oslo, Norway, June 2004. Springer Verlag.
[5]
Kim B. Bruce, Martin Odersky, and Philip Wadler. A statically safe alternative to virtual types. In Proceedings of 12th European Conference on Object-Oriented Programming (ECOOP'98), volume 1445 of Lecture Notes on Computer Science, pages 523--549, Brussels, Belgium, July 1998. Springer Verlag.
[6]
Kim B. Bruce, Leaf Petersen, and Adrian Fiech. Subtyping is not a good ``match'' for object-oriented languages. In Proceedings of 11th European Conference on Object-Oriented Programming (ECOOP'97), volume 1241 of Lecture Notes on Computer Science, pages 104--127, Jyväskylä, Finland, June 1997. Springer Verlag.
[7]
Kim B. Bruce, Angela Schuett, and Robert van Gent. PolyTOIL: A type-safe polymorphic object-oriented language. In WOlthoff, editor, Proceedings of 9th European Conference on Object-Oriented Programming (ECOOP'95), volume 952 of Lecture Notes on Computer Science, pages 27--51, Aarhus, Denmark, August 1995. Springer Verlag.
[8]
Kim B. Bruce and Joseph C. Vanderwaart. Semantics-driven language design: Statically type-safe virtual types in object-oriented languages. In Proceedings of 15th Conference on the Mathematical Foundations of Programming Semantics (MFPS XV), volume 20 of Electronic Notes in Theoretical Computer Science, New Orleans, LA, April 1999. Elsevier. Available through http://www.elsevier.nl/locate/entcs/volume20.html.
[9]
Dave Clarke, Sophia Drossopoulou, James Noble, and Tobias Wrigstad. Tribe: A simple virtual class calculus. In Proceedings of International Conference on Aspect-Oriented Software Design (AOSD'07), pages 121--134, Vancouver, BC, March 2007.
[10]
Vincent Cremet, François Garillot, Sergueï Lenglet, and Martin Odersky. A core calculus for Scala type checking. In Proceedings of International Symposium on Mathematical Foundations of Computer Science, Springer LNCS, pages 1--23, September 2006.
[11]
Erik Ernst. Propagating class and method combination. In Proceedings of European Conference on Object-Oriented Programming (ECOOP'99), volume 1628 of Lecture Notes on Computer Science, pages 67--91, Lisboa, Portugal, June 1999. Springer Verlag.
[12]
Erik Ernst. Family polymorphism. In Proceedings of European Conference on Object-Oriented Programming (ECOOP2001), volume 2072 of Lecture Notes on Computer Science, pages 303--326, Budapest, Hungary, June 2001. Springer Verlag.
[13]
Erik Ernst. Higher-order hierarchies. In Proceedings of European Conference on Object-Oriented Programming (ECOOP2003), volume 2743 of Lecture Notes on Computer Science, pages 303--328, Darmstadt, Germany, July 2003. Springer Verlag.
[14]
Erik Ernst, Klaus Ostermann, and William R. Cook. A virtual class calculus. In Proceedings of ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL2006), pages 270--282, Charleston, SC, January 2006.
[15]
James Gosling, Bill Joy, Guy Steele, and Gilad Bracha. The Java Language Specification. Addison-Wesley, third edition, June 2005.
[16]
Atsushi Igarashi and Benjamin C. Pierce. On inner classes. Information and Computation, 177(1):56--89, August 2002. A special issue with papers from the 7th International Workshop on Foundations of Object-Oriented Languages (FOOL7). An earlier version appeared in Proceedings of the 14th European Conference on Object-Oriented Programming, Springer LNCS 1850, pages 129--153, June, 2000.
[17]
Atsushi Igarashi, Benjamin C. Pierce, and Philip Wadler. Featherweight Java: A minimal core calculus for Java and GJ. ACM Transactions on Programming Languages and Systems, 23(3):396--450, May 2001. A preliminary summary appeared in Proceedings of the ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA'99), ACM SIGPLAN Notices, volume 34, number 10, pages 132--146, October 1999.
[18]
Atsushi Igarashi and Mirko Viroli. Variant parametric types: A flexible subtyping scheme for generics. ACM Transactions on Programming Languages and Systems, 28(5):795--847, 2006.
[19]
Atsushi Igarashi and Mirko Viroli. Variant path types for scalable extensibility. In Informal Proceedings of the International Workshop on Foundations and Development of Object-Oriented Languages (FOOL/WOOD 2007), Nice, France, January 2007. Available at http://foolwood07.cs.uchicago.edu/accepted.html.
[20]
Paul Jolly, Sophia Drossopoulou, Christopher Anderson, and Klaus Ostermann. Simple dependent types: Concord. In Proceedings of 6th ECOOP Workshop on Formal Techniques for Java-like Programs (FTfJP2004), June 2004.
[21]
Ole Lehrmann Madsen and Birger Møller-Pedersen. Virtual classes: A powerful mechanism in object-oriented programming. In Proceedings of ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA'89), pages 397--406, October 1989.
[22]
Ole Lehrmann Madsen, Birger Møller-Pedersen, and Kristen Nygaard. Object-Oriented Programming in the BETA Programming Language. Addison Wesley, 1993.
[23]
Mira Mezini and Klaus Ostermann. Conquering aspects with Caesar. In Proceedings of International Conference on Aspect-Oriented Software Design (AOSD'03), pages 90--99. ACM, 2003.
[24]
John C. Mitchell and Gordon D. Plotkin. Abstract types have existential types. ACM Transactions on Programming Languages and Systems, 10(3):470--502, 1988. Preliminary version appeared in Proc. of the 12th ACM POPL, 1985.
[25]
Nathaniel Nystrom, Stephen Chong, and Andrew C. Myers. Scalable extensibility via nested inheritance. In Proceedings of ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA'04), pages 99--115, Vancouver, BC, October 2004.
[26]
Nathaniel Nystrom, Xin Qi, and Andrew C. Myers. J&: Nested intersection for scalable software composition. In Proceedings of ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA'06), pages 21--36, Portland, OR, October 2006.
[27]
Martin Odersky, Vincent Cremet, Christine Röckl, and Matthias Zenger. A nominal theory of objects with dependent types. In Luca Cardelli, editor, Proceedings of European Conference on Object-Oriented Programming (ECOOP'03), volume 2743 of Lecture Notes on Computer Science, pages 201--224, Darmstadt, Germany, July 2003. Springer Verlag.
[28]
Martin Odersky and Matthias Zenger. Scalable component abstraction. In Proceedings of ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA'05), pages 41--57, San Diego, CA, October 2005.
[29]
Chieri Saito, Atsushi Igarashi, and Mirko Viroli. Lightweight family polymorphism. Journal of Functional Programming, 2007. To appear. A preliminary summary appeared in Proceedings of the 3rd Asian Symposium on Programming Languages and Systems, Springer LNCS vol. 3780, pages 161--177, November, 2005.
[30]
Yannis Smaragdakis and Don S. Batory. Implementing layered designs with mixin layers. In Proceedings of 12th European Conference on Object-Oriented Programming (ECOOP'98), volume 1445 of Lecture Notes on Computer Science, pages 550--570, Brussels, Belgium, July 1998. Springer Verlag.
[31]
Mads Torgersen. The expression problem revisited: Four new solutions using generics. In Proceedings of European Conference on Object-Oriented Programming (ECOOP2004), volume 3086 of Lecture Notes on Computer Science, pages 123--146, Oslo, Norway, June 2004.
[32]
Mads Torgersen, Erik Ernst, Christian Plesner Hansen, Peter von der Ahé, Gilad Bracha, and Neal Gafter. Adding wildcards to the Java programming language. Journal of Object Technology, 3(11), December 2004. Special issue: OOPS track at SAC 2004, pp. 97--116.
[33]
Andrew K. Wright and Matthias Felleisen. A syntactic approach to type soundness. Information and Computation, 115(1):38--94, November 1994.
[34]
Matthias Zenger and Martin Odersky. Independently extensible solutions to the expression problem. Technical Report IC/2004/33, École Polytechnique Fédérale de Lausanne, Lausanne, Switzerland, March 2004.

Cited By

View all
  • (2024)Persimmon: Nested Family Polymorphism with Extensible Variant TypesProceedings of the ACM on Programming Languages10.1145/36498368:OOPSLA1(698-724)Online publication date: 29-Apr-2024
  • (2017)Familia: unifying interfaces, type classes, and family polymorphismProceedings of the ACM on Programming Languages10.1145/31338941:OOPSLA(1-31)Online publication date: 12-Oct-2017
  • (2016)Unifying Data and Constraint RepairsJournal of Data and Information Quality10.1145/28836167:3(1-26)Online publication date: 17-Aug-2016
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
OOPSLA '07: Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems, languages and applications
October 2007
728 pages
ISBN:9781595937865
DOI:10.1145/1297027
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 42, Issue 10
    Proceedings of the 2007 OOPSLA conference
    October 2007
    686 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/1297105
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 21 October 2007

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. scalable extensibility
  2. subtyping
  3. variance
  4. variant path types

Qualifiers

  • Article

Conference

OOPSLA07
Sponsor:

Acceptance Rates

OOPSLA '07 Paper Acceptance Rate 33 of 156 submissions, 21%;
Overall Acceptance Rate 268 of 1,244 submissions, 22%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)4
  • Downloads (Last 6 weeks)0
Reflects downloads up to 28 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Persimmon: Nested Family Polymorphism with Extensible Variant TypesProceedings of the ACM on Programming Languages10.1145/36498368:OOPSLA1(698-724)Online publication date: 29-Apr-2024
  • (2017)Familia: unifying interfaces, type classes, and family polymorphismProceedings of the ACM on Programming Languages10.1145/31338941:OOPSLA(1-31)Online publication date: 12-Oct-2017
  • (2016)Unifying Data and Constraint RepairsJournal of Data and Information Quality10.1145/28836167:3(1-26)Online publication date: 17-Aug-2016
  • (2014)Automatic Scene Inference for 3D Object CompositingACM Transactions on Graphics10.1145/260214633:3(1-15)Online publication date: 2-Jun-2014
  • (2014)Robust Polylines Tracing for N-Symmetry Direction Field on Triangulated SurfacesACM Transactions on Graphics10.1145/260214533:3(1-11)Online publication date: 2-Jun-2014
  • (2014)Progressive Light Transport Simulation on the GPUACM Transactions on Graphics10.1145/260214433:3(1-19)Online publication date: 2-Jun-2014
  • (2014)A meta-circular language for active librariesScience of Computer Programming10.1016/j.scico.2014.05.00395:P2(219-253)Online publication date: 1-Dec-2014
  • (2013)A meta-circular language for active librariesProceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation10.1145/2426890.2426913(117-126)Online publication date: 21-Jan-2013
  • (2013)Matching MyType to subtypingScience of Computer Programming10.1016/j.scico.2012.12.01078:7(933-952)Online publication date: 1-Jul-2013
  • (2012)Challenges in the design of the package template mechanismTransactions on Aspect-Oriented Software Development IX10.5555/2434958.2434968(268-305)Online publication date: 1-Jan-2012
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media