Tribe: a simple virtual class calculus

Beginning with BETA, a range of programming language mechanisms such as virtual classes (class-valued attributes of objects) have been developed to allow inheritance in the presence of mutually dependent classes. This paper presents Tribe, a type system which generalises and simplifies other formalisms of such mechanisms, by treating issues which are inessential for soundness, such as the precise details of dispatch and field initialisation, as orthogonal to the core formalism. Tribe can support path types dependent simultaneously on both classes and objects, which is useful for writing library code, and ubiquitous access to an object's family, which offers family polymorphism without the need to drag around family arguments. Languages based on Tribe will be both simpler and more expressive than existing designs, while having a simpler type system, serving as a useful basis for future language designs.

[1]  Dave Clarke,et al.  External Uniqueness Is Unique Enough , 2003, ECOOP.

[2]  Mira Mezini,et al.  Conquering aspects with Caesar , 2003, AOSD '03.

[3]  Erik Ernst,et al.  Family Polymorphism , 2001, ECOOP.

[4]  Mirko Viroli,et al.  Lightweight family polymorphism , 2008, J. Funct. Program..

[5]  W. Cook,et al.  A Virtual Class Calculus , 2005 .

[6]  Mira Mezini,et al.  An Overview of CaesarJ , 2006, LNCS Trans. Aspect Oriented Softw. Dev..

[7]  K. Rustan M. Leino,et al.  Declaring and checking non-null types in an object-oriented language , 2003, OOPSLA 2003.

[8]  Gilad Bracha,et al.  The programming language jigsaw: mixins, modularity and multiple inheritance , 1992 .

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

[10]  Tobias Wrigstad,et al.  Ownership-Based Alias Managemant , 2006 .

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

[12]  Martin Odersky,et al.  A Core Calculus for Scala Type Checking , 2006, MFCS.

[13]  Dave Clarke Sophia Drossopoulou Tribe : A Simple Virtual Class Calculus 1 , 2006 .

[14]  Robert DeLine,et al.  The fugue protocol checker: is your software baroque? technical report msr-tr-2004-07 , 2004 .

[15]  Matthias Felleisen,et al.  A Syntactic Approach to Type Soundness , 1994, Inf. Comput..

[16]  Oscar Nierstrasz,et al.  Traits: Composable Units of Behaviour , 2002, ECOOP.

[17]  Guy L. Steele,et al.  Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley)) , 2005 .

[18]  Erik Ernst gbeta - a Language with Virtual Attributes, Block Structure, and Propagating, Dynamic Inheritance , 2000 .

[19]  Xiaowei Shen,et al.  Improving the Java memory model using CRF , 2000, OOPSLA '00.

[20]  David Gerard Clarke,et al.  Object ownership and containment , 2003 .

[21]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[22]  Martin Odersky,et al.  A Nominal Theory of Objects with Dependent Types , 2003, ECOOP.

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

[24]  Martin Odersky,et al.  An Overview of the Scala Programming Language , 2004 .

[25]  Andrew C. Myers,et al.  Scalable extensibility via nested inheritance , 2004, OOPSLA.

[26]  S. Drossopoulou,et al.  Tribe: More Types for Virtual Classes , 2007 .

[27]  Benjamin C. Pierce,et al.  Advanced Topics In Types And Programming Languages , 2004 .

[28]  Paul Jolly,et al.  Simple Dependent Types: Concord , 2004 .