Nested Types

We currently see a convergence of module systems and type systems for object-oriented programming. This convergence is driven by the demands of large scale component systems. Objectoriented languages for medium-scale systems such as Eiffel or Sather still worked with an unstructured set of classes, but as systems grow this becomes less practical. Consequently, more recent languages such as Beta [MMPN93] or Java [GJS96] allow for class nesting. Class nesting raises issues such as hiding and refinement that have first been studied in module systems. On the other hand, recent module systems embody many of the properties of class systems, e.g. first-class modules[Rus98], mixin modules [Dug96], or recursion between modules.

[1]  David B. MacQueen Using dependent types to express modular structure , 1986, POPL '86.

[2]  John C. Mitchell,et al.  Abstract types have existential type , 1988, TOPL.

[3]  Luca Cardelli,et al.  Typeful Programming , 1989, Formal Description of Programming Concepts.

[4]  Ole Lehrmann Madsen,et al.  Virtual classes: a powerful mechanism in object-oriented programming , 1989, OOPSLA '89.

[5]  John C. Mitchell,et al.  F-bounded quantification for object-oriented programming , 1989 .

[6]  Luca Cardelli,et al.  Abstract Types and the Dot Notation , 1990, Programming Concepts and Methods.

[7]  Andrew W. Appel,et al.  Standard ML of New Jersey , 1991, PLILP.

[8]  Benjamin C. Pierce,et al.  Bounded quantification is undecidable , 1992, POPL '92.

[9]  Kim B. Bruce Safe type checking in a statically-typed object-oriented programming language , 1993, POPL '93.

[10]  Ole Lehrmann Madsen,et al.  Object-oriented programming in the BETA programming language , 1993 .

[11]  Xavier Leroy,et al.  Manifest types, modules, and separate compilation , 1994, POPL '94.

[12]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[13]  Mark Lillibridge,et al.  A type-theoretic approach to higher-order modules with sharing , 1994, POPL '94.

[14]  Jens Palsberg,et al.  Object-oriented type systems , 1994, Wiley professional computing.

[15]  Dominic Duggan,et al.  Mixin modules , 1996, ICFP '96.

[16]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[17]  Mark P. Jones,et al.  Using parameterized signatures to express modular structure , 1996, POPL '96.

[18]  Martin Odersky,et al.  Pizza into Java: translating theory into practice , 1997, POPL '97.

[19]  Sophia Drossopoulou,et al.  Java is Type Safe - Probably , 1997, ECOOP.

[20]  Claudio V. Russo Types for Modules , 2004, Electronic Notes in Theoretical Computer Science.

[21]  Martin Odersky,et al.  A Statically Safe Alternative to Virtual Types , 1998, ECOOP.

[22]  Tobias Nipkow,et al.  Javalight is type-safe—definitely , 1998, POPL '98.

[23]  Mads Torgersen Virtual types are statically safe , 1998 .

[24]  Matthias Felleisen,et al.  Classes and mixins , 1998, POPL '98.

[25]  Benjamin C. Pierce,et al.  Local type inference , 1998, POPL '98.

[26]  John H. Reppy,et al.  The design of a class mechanism for Moby , 1999, PLDI '99.

[27]  Martin Odersky,et al.  Functional Nets , 2000, ESOP.

[28]  Martin Odersky,et al.  Objects + Views = Components? , 2000, Abstract State Machines.

[29]  Martin Odersky,et al.  Colored local type inference , 2001, POPL '01.

[30]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 2001, TOPL.

[31]  Damien Doligez,et al.  The Objective Caml system release 2.04 , 2002 .

[32]  Atsushi Igarashi,et al.  Foundations for Virtual Types , 1999, Inf. Comput..