Hostname: page-component-78c5997874-xbtfd Total loading time: 0 Render date: 2024-11-15T21:18:51.016Z Has data issue: false hasContentIssue false

Simple type-theoretic foundations for object-oriented programming

Published online by Cambridge University Press:  07 November 2008

Benjamin C. Pierce
Affiliation:
Department of Computer Science, University of Edinburgh, The King's Buildings, Edinburgh EH9 3JZ, UK
David N. Turner
Affiliation:
Department of Computer Science, University of Edinburgh, The King's Buildings, Edinburgh EH9 3JZ, UK
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

We develop a formal, type-theoretic account of the basic mechanisms of object-oriented programming: encapsulation, message passing, subtyping and inheritance. By modelling object encapsulation in terms of existential types instead of the recursive records used in other recent studies, we obtain a substantial simplification both in the model of objects and in the underlying typed λ-calculus.

Type
Research Article
Copyright
Copyright © Cambridge University Press 1994

References

Abadi, M. (1993) Baby Modula-3 and a Theory of Objects, Research Report 95, Digital Equipment Corporation, Systems Research Center, Palo Alto, CA.Google Scholar
Bobrow, D.G., DeMichiel, L.G., Gabriel, R.P., Keene, S.E., Kiczales, G. and Moon, D.A. (1988) Common Lisp Object System Specification X3J13 Document 88-002R, SIGPLAN Not. 23.CrossRefGoogle Scholar
Bruce, K. and Mitchell, J. (1992) PER models of subtyping, recursive types and higher-order polymorphism. In: Proc. 19th ACM Symp. on Principles of Program. Lang.January.CrossRefGoogle Scholar
Bruce, K.B. (1991) The equivalence of two semantic definitions for inheritance in object-oriented languages. In: Proc. Math. Foundations of Program. SemanticsMarch.CrossRefGoogle Scholar
Bruce, K.B. (1992) A Paradigmatic Object-Oriented Language: Design, Static Typing and Semantics, Technical Report CS-92-01, Williams College, January.Google Scholar
Bruce, K.B. (1993) Safe type checking in a statically typed object-oriented programming language. In: Proc. 20th ACM Symp. on Principles of Program. Lang.January.CrossRefGoogle Scholar
Bruce, K.B. and Longo, G. (1990) A modest model of records, inheritance, and bounded quantification, Information and Computation 87: 196240. (Also in C.A. Gunter and J.C. Mitchell, eds., Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design, MIT Press, 1993. An earlier version appeared in Proc. IEEE Symp. on Logic in Comput. Sci., 1988.)CrossRefGoogle Scholar
Bruce, K.B. and van Gent, R. (1993) TOIL: A new Type-safe Object-oriented Imperative Language, submitted for publication.Google Scholar
Budd, T. (1991) An Introduction to Object-Oriented Programming, Addison-Wesley, Reading, MA.Google Scholar
Canning, P., Cook, W, Olthoff, G. and Mitchell, J. (1989) F-bounded quantification for object-oriented programming. In: Proc. 4th Intern. Conf. on Functional Program. & Computer Archit., pp. 273280, September.CrossRefGoogle Scholar
Cardelli, L. (1986) Amber, in: Cousineau, G., Curien, P.-L. and Robinet, B. (Eds.), Combinators and Functional Programming Languages, Lecture Notes in Computer Science 242, Springer, pp. 2147.CrossRefGoogle Scholar
Cardelli, L. (1988a) A semantics of multiple inheritance, Information and Computation 76: 138164. (Preliminary version in Kahn, MacQueen and Plotkin, eds., Semantics of Data Types, Lecture Notes in Computer Science 173, Springer, 1984.)CrossRefGoogle Scholar
Cardelli, L. (1988b) Structural subtyping and the notion of power type. In: Proc. 15th ACM Symp. on Principles of Program. Lang., pp. 7079, January.CrossRefGoogle Scholar
Cardelli, L. (1990) Notes about F, Unpublished notes, October.Google Scholar
Cardelli, L. (1992a) Extensible Records in a Pure Calculus of Subtyping, Research report 81, DEC Systems Research Center, 01. (Also in C.A. Gunter and J.C. Mitchell, eds., Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design, MIT Press, 1993.)Google Scholar
Cardelli, L. (1992b) Typed Foundations of Object-oriented Programming, Tutorial given at POPL '92, January.Google Scholar
Cardelli, L. and Mitchell, J. (1991) Operations on records, Mathematical Structures in Computer Science 1: 348. (Also in C.A. Gunter and J.C. Mitchell, eds., Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design, MIT Press, 1993. Available as DEC Systems Research Center Research Report #48, August 1989, and in Proceedings MFPS '89, Lecture Notes in Computer Science 442, Springer.)CrossRefGoogle Scholar
Cardelli, L. and Wegner, P. (1985) On understanding types, data abstraction, and polymorphism, Comput. Surv. 17(4)CrossRefGoogle Scholar
Cardelli, L., Martini, S., Mitchell, J.C. and Scedrov, A. (1991) An extension of system F with subtyping. In: Ito, T. and Meyer, A.R. (Eds.), Theoretical Aspects of Computer Software (Sendai, Japan), Lecture Notes in Computer Science 526, Springerg, pp. 750770.Google Scholar
Castagna, G., Ghelli, G. and Longo, G. (1992) A calculus for overloaded functions with subtyping. In: ACM Conf. on LISP and Functional Progra.g, ACM Press, San Francisco, CA, pp. 182192. (Also available as Rapport de Recherche LIENS-92-4, Ecole Normale Supérieure, Paris, France.)Google Scholar
Castagna, G. (1992) Strong Typing in Object-Oriented Paradigms, Rapport de Recherche LIENS-92-11, Ecole Normale Supérieure, Paris, France, May.Google Scholar
Compagnoni, A.B. and Pierce, B.C. (1993) Multiple Inheritance via Intersection Types, Technical Report ECS-LFCS-93-275, LFCS, University of Edinburgh, UK, August. (Also available as Catholic University Nijmegen Computer Science Technical Report 93-18. Submitted for conference publication.)Google Scholar
Cook, W. (1989) A Denotational Semantics of Inheritance, PhD thesis, Brown University.CrossRefGoogle Scholar
Cook, W.R.Hill, W.L. and Canning, P.S. (1990) Inheritance is not subtyping. In: Proc. 17th Ann. ACM Symp. on Principles of Program. Lang., pp. 125135 January. (Also in C.A. Gunter and J.C. Mitchell, eds., Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design, MIT Press, 1993.)Google Scholar
Coppo, M., Dezani-Ciancaglini, M. and Venneri, B. (1981) Functional characters of solvable terms, Zeitschrift für Mathematische Logik und Grundlagen der Mathematik 27: 4558.CrossRefGoogle Scholar
Curien, P.-L. and Ghelli, G. (1992) Coherence of subsumption: Minimum typing and type-checking in F, Mathematical Struct. in Comput. Sci. 2: 5591CrossRefGoogle Scholar
Gunter, C.A and Mitchell, J.C eds. Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design, MIT Press, 1993Google Scholar
de Bruijn, N.G. (1972) Lambda-calculus notation with nameless dummies: a tool for automatic formula manipulation with application to the Church-Rosser theorem, Indag. Math. 34 (5): 381392CrossRefGoogle Scholar
Ghelli, G. (1991) A static type system for message passing. In: Conf. on Object-Oriented Program. Syst., Lang. & Applic., pp. 129143, October. (Distributed as SIGPLAN Not. 26 (11), 1991.)Google Scholar
Girard, J.-Y. (1972) Interprétation fonctionelle et élimination des coupures de l'arithmétique d'ordre supérieur. PhD thesis, Université Paris VII, FranceGoogle Scholar
Goldberg, A. and Robson, D. (1983) Smalltalk-80: The Language and Its Implementation Addison-Wesley, Reading, MA.Google Scholar
Graver, J.O. and Johnson, R.E. (1990) A type system for Smalltalk. In: Proc. 17th Ann. ACM Symp. on Principles of Program. Lang., pp. 125135, January.Google Scholar
Hofmann, M. and Pierce, B. (1994) A unifying type-theoretic framework for objects. In: Symp. on Theoretical Aspects of Comput. Sci. (Extended version available as ‘An Abstract View of Objects and Subtyping (Preliminary Report)’ University of Edinburgh, LFCS Technical Report ECS-LFCS-92-226, 1992.)Google Scholar
Jategaonkar, L.A. and Mitchell, J.C. (1988) ML with extended pattern matching and subtypes (preliminary version). In: Proc. ACM Conf. on Lisp and Functional Program., pp. 198211, July.Google Scholar
Kamin, S. (1988) Inheritance in Smalltalk-80: A denotational definition. In: Proc. ACM Symp. on Principles of Program. Lang. pp. 8087, January.Google Scholar
Mitchell, J. and Plotkin, G. (1988) Abstract types have existential type, ACM Trans. Program. Lang. & Syst. 10(3).CrossRefGoogle Scholar
Mitchell, J., Meldal, S. and Madhav, N. (1991) An extension of Standard ML modules with subtyping and inheritance. In: Proc. 18th ACM Symp. on Principles of Program. Lang., pp. 270278, January.Google Scholar
Mitchell, J.C. (1990) Toward a typed foundation for method specialization and inheritance. In: Proc. 17th ACM Symp. on Principles of Program. Lang. pp. 109124, January.Google Scholar
Mitchell, J.C. (1990) (Also in Gunter, C.A. and Mitchell, J.C., eds., Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design, MIT Press, 1993.)Google Scholar
Mitchell, J.C.Honsell, F. and Fisher, K. (1993) A lambda calculus of objects and method specialization. In: IIEEE Symp. on Logic in Comput. Sci., pp. 109124, June.Google Scholar
Pierce, B.C. and Turner, D.N. (1993a) Object-oriented programming without recursive types. In: Proc. 20th ACM Symp. on Principles of Program. Lang., pp. 109124, January.Google Scholar
Pierce, B.C. and Turner, D.N. (1993b) Statically Typed Friendly Functions via Partially Abstract Types, Technical Report ECS-LFCS-93-256. University of Edinburgh, LFCS, pp. 109124. (Also available as INRIA-Rocquencourt Rapport de Recherche No. 1899.)Google Scholar
Reddy, U.S. (1988) Objects as closures: Abstract semantics of object oriented languages. In: Proc. ACM Symp. on Lisp and Functional Program., pp. 289297, July.Google Scholar
Rémy, D. (1989) Typechecking records and variants in a natural extension of ML. In: Proc. 16th Ann. ACM Symp. on Principles of Program. Lang., pp. 242249. (Also in C.A. Gunter and J.C. Mitchell, eds., Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design, MIT Press, 1993.)Google Scholar
Reynolds, J.C. (1983) Types, abstraction, and parametric polymorphism. In: Mason, R.E.A. (Ed.), Information Processing 83, Elsevier, Amsterdam, pp.513523.Google Scholar
Reynolds, J. (1985) Three approaches to type structure. In: Mathematical Foundations of Software Development; Lecture Notes in Computer Science 185, Springer.Google Scholar
Reynolds, J.C. (1978) User defined types and procedural data structures as complementary approaches to data abstraction. In: Gries, D. (Ed.), Programming Methodology, A Collection of Articles by IFIP WG2.3, Springer, New York, pp. 309317.Google Scholar
Schuman, S.A. ed., New Advances in Algorithmic Languages 1975, Inst. de Recherche d'Informatique et d'Automatique, Rocquencourt, pp. 157168.Google Scholar
Gunter, C.A and Mitchell, J.C. eds., Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design, MIT Press, 1993.)Google Scholar
Robinson, E. and Tennent, R. (1988) Bounded quantification and record-update problems. Message to Types electronic mail list.Google Scholar
Snyder, A. (1986) Encapsulation and inheritance in object-oriented programming languages. In: Proc. OOPSLA '86. Distributed as ACM SIGPLAN Not. 21 (11): 3845.Google Scholar
Ungar, D. and Smith, R.B. (1987) Self: The power of simplicity. In: Proc. ACM Symp. on Object-Oriented Program.: Lang., Syst. and Applic., pp. 227241.Google Scholar
Wand, M. (1987) Complete type inference for simple objects. In: Proc. IEEE Symp. on Logic in Comput. Sci., pp. 227241, 06.Google Scholar
Wand, M. (1988) Corrigendum: Complete type inference for simple objects. In: Proc. IEEE Symp. on Logic in Comput. Sci.Google Scholar
Wand, M. (1989) Type Inference for record concatenation and multiple inheritance. In: Proc. 4th Ann. IEEE Symp. on Logic in Comput. Sci., pp. 9297.Google Scholar
Submit a response

Discussions

No Discussions have been published for this article.