BeCecil, A Core Object-Oriented Language with Block Structure and Multimethods: Semantics and Typing

We present and analyze the semantics and static type system for BeCecil, a theoretical (core) language with multimethods. BeCecil is a simple and orthogonal version of object-oriented languages like Cecil, CLOS, and Dylan. BeCecil has a new, simple mechanism for information hiding, which allows subclassing and yet can preserve representation invariants. BeCecil is also block-structured; within a block, one can extend a generic function with new multimethods, which may come from other generic functions. The inheritance relationships of objects may be extended in any block, and are statically scoped. The type system separates classes from types, and inheritance from subtyping. Subtype relationships are also extensible and statically scoped. These features combine to make BeCecil unusually expressive, while still allowing static typechecking.

[1]  John G. Hosking,et al.  Multi-Methods in a Statically-Typed Programming Language , 1991, ECOOP.

[2]  David Notkin,et al.  Using C++ Templates to Implement Role-Based Designs , 1996, ISOTAS.

[3]  Peter F. Sweeney,et al.  Three steps to views: extending the object-oriented paradigm , 1989, OOPSLA 1989.

[4]  Samuel P. Harbison,et al.  Modula-3 , 1992 .

[5]  Craig Schaffert,et al.  CLU Reference Manual , 1984, Lecture Notes in Computer Science.

[6]  Verzekeren Naar Sparen,et al.  Cambridge , 1969, Humphrey Burton: In My Own Time.

[7]  O. J. Dahl,et al.  Simula Begin , 1979 .

[8]  Greg Nelson,et al.  Systems programming in modula-3 , 1991 .

[9]  Jack Trout,et al.  The Power Of Simplicity , 1998 .

[10]  Alan Snyder Encapsulation and inheritance in object-oriented programming languages , 1986, OOPSLA 1986.

[11]  G. Winskel The formal semantics of programming languages , 1993 .

[12]  Giorgio Ghelli,et al.  A static type system for message passing , 1991, OOPSLA '91.

[13]  Daniel G. Bobrow,et al.  CommonLoops: Merging Lisp and Object-Oriented Programming , 1986, OOPSLA.

[14]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[15]  J. Meseguer,et al.  Order-Sorted Algebra Solves the Constructor-Selector, Multiple Representation, and Coercion Problems , 1993, Inf. Comput..

[16]  Robert D. Tennent,et al.  Semantics of programming languages , 1991, Prentice Hall International Series in Computer Science.

[17]  Peter F. Sweeney,et al.  Three steps to views: extending the object-oriented paradigm , 1989, OOPSLA '89.

[18]  Andrew Shalit,et al.  The Dylan Reference Manual: The Definitive Guide to the New Object-Oriented Dynamic Language , 1996 .

[19]  Harold Ossher,et al.  Subject-oriented composition rules , 1995, OOPSLA.

[20]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

[21]  Harold Ossher,et al.  Subject-oriented programming: a critique of pure objects , 1993, OOPSLA '93.

[22]  David A. Moon,et al.  Object-oriented programming with flavors , 1986, OOPLSA '86.

[23]  Gary T. Leavens,et al.  Typechecking and modules for multi-methods , 1994, OOPSLA '94.

[24]  Gary T. Leavens,et al.  Typechecking and modules for multi-methods , 1994, OOPSLA 1994.

[25]  Craig Chambers,et al.  Predicate Classes , 1993, ECOOP.

[26]  Henry Ledgard,et al.  Reference Manual for the ADA® Programming Language , 1983, Springer New York.

[27]  Luca Cardelli,et al.  On Binary Methods , 1995, Theory Pract. Object Syst..

[28]  Jean D. etc. Ichbiah Reference Manual for the ADA Programming Language , 1983 .

[29]  Martín Abadi,et al.  An Imperative Object Calculus , 1995, TAPSOFT.

[30]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Information and Computation.

[31]  Trygve Reenskaug,et al.  System Design by Composing Structures of Interacting Objects , 1992, ECOOP.

[32]  Giuseppe Castagna,et al.  A Meta-Language for Typed Object-Oriented Languages , 1995, Theor. Comput. Sci..

[33]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[34]  Jr. Guy L. Steele,et al.  Common LISP: the language (2nd ed.) , 1990 .

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

[36]  Bjarne Stroustrup,et al.  The C++ Programming Language, Second Edition , 1991 .

[37]  Craig Chambers,et al.  Object-Oriented Multi-Methods in Cecil , 1992, ECOOP.

[38]  Bruce G. Lindsay,et al.  Static type checking of multi-methods , 1991, OOPSLA '91.

[39]  Ralph E. Johnson,et al.  Surveying current research in object-oriented design , 1990, CACM.

[40]  Brian W. Kernighan,et al.  The C Programming Language, Second Edition , 1988 .

[41]  William R. Cook,et al.  Object-Oriented Programming Versus Abstract Data Types , 1990, REX Workshop.

[42]  Giuseppe Castagna,et al.  A Calculus for Overloaded Functions with Subtyping , 1995, Inf. Comput..

[43]  François Rouaix,et al.  Safe run-time overloading , 1989, POPL '90.

[44]  Robin Milner,et al.  Definition of standard ML , 1990 .

[45]  Gary T. Leavens Modular specification and verification of object-oriented programs , 1991, IEEE Software.

[46]  Günther Blaschek,et al.  Object-oriented programming - with prototypes , 1994 .

[47]  Giuseppe Castagna,et al.  A calculus for overloaded functions with subtyping , 1992, LFP '92.

[48]  James H. Morris Protection in programming languages , 1973, CACM.

[49]  David Grove,et al.  Vortex: an optimizing compiler for object-oriented languages , 1996, OOPSLA '96.

[50]  Bertrand Meyer,et al.  Eiffel: The Language , 1991 .

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

[52]  Randall B. Smith,et al.  SELF: The power of simplicity , 1987, OOPSLA '87.

[53]  John C. Reynolds,et al.  Using category theory to design implicit conversions and generic operators , 1980, Semantics-Directed Compiler Generation.

[54]  Randall B. Smith,et al.  Self: The power of simplicity , 1987, OOPSLA 1987.

[55]  Andreas Paepcke Object-oriented programming: the CLOS perspective , 1993 .

[56]  Mitchell Wand,et al.  Essentials of programming languages , 2008 .

[57]  Giuseppe Castagna,et al.  Instance variables specialization in object-oriented programming , 1996 .

[58]  Jonathan Rees,et al.  Revised3 report on the algorithmic language scheme , 1986, SIGP.

[59]  Craig Chambers The Cecil Language - Specification and Rationale - Version 3.0 , 1995 .

[60]  Giuseppe Castagna,et al.  Covariance and contravariance: conflict without a cause , 1995, TOPL.

[61]  J. Davenport Editor , 1960 .

[62]  W. Bowen,et al.  Philadelphia , 1892 .