Abstract
This paper presents an imperative object calculus designed to support class-based programming via a combination of extensible objects and encapsulation. This calculus simplifies the language presented in [17] in that, like C++ and Java, it chooses to support an imperative semantics instead of method specialization. We show how Java-style classes and “mixins” may be coded in this calculus, prove a type soundness theorem (via a subject reduction property), and give a sound and complete typing algorithm.
Preview
Unable to display preview. Download preview PDF.
References
M. Abadi and L. Cardelli. An imperative object calculus. Theory and Practice of Object Systems, 1(3):151–166, 1996. Earlier version appeared in TAPSOFT '95 proceedings.
M. Abadi and L. Cardelli. A Theory of Objects. Springer, 1996.
M. Abadi and L. Cardelli. A theory of primitive objects: Untyped and first-order systems. Information and Computation, 125(2):78–102, 1996. Earlier version appeared in TACS '94 proceedings, LNCS 789.
K. Arnold and J. Gosling. The Java Programming Language. Addison Wesley, 1996.
G.M. Birtwistle, O.-J. Dahl, B. Myhrhaug, and K. Nygaard. Simula Begin. Studentlitteratur, Box 1717, S-222 01 Lund, Sweden; Auerbach, Philadelphia, 1973.
V. Bono, M. Bugliesi, and L. Liquori. A lambda calculus of incomplete objects. In Proc. MFCS '96, pages 218–229. Springer LNCS 1113, 1996.
V. Bono and K. Fisher. A first-order, extensible-object calculus with support for classes. Unpublished manuscript; work-in-progress, 1998.
V. Bono and K. Fisher. An imperative, first-order calculus with object extension. In Proc. 5th Annual FOOL Workshop, pages 8.1–8.13, January 1998.
V. Bono and L. Liquori. A subtyping for the Fisher-Honsell-Mitchell lambda calculus of objects. In L. Pacholsky and J. Tiuryn, editors, Proc. of Int'l Conf. of Computer Science Logic, pages 16–30, Berlin, June 1995. Springer LNCS 933.
K. Bruce. Safe type checking in a statically-typed object-oriented programming language. In Proc. 20th ACM Symp. Principles of Programming Languages, pages 285–298, 1993.
K. Bruce, A. Schuett, and R. van Gent. PolyTOIL: A type-safe polymorphic object-oriented language. In Proc. 9th European Conference on Object-Oriented Programming, pages 26–51, Aarhus, Denmark, 1995. Springer LNCS 952.
L. Cardelli and X. Leroy. Abstract types and the dot notation, pages 479–504. IFIP State of the Art Reports. North Holland, March 1990. Also appeared as SRC Research Report 56.
L. Cardelli and P. Wegner. On understanding types, data abstraction, and polymorphism. Computing Surveys, 17(4):471–522, 1985.
A.B. Compagnoni. Higher-Order Subtyping with Intersection Types. PhD thesis, Katholieke Universiteit Nijmegen, 1994.
J. Eifrig, S. Smith, and V. Trifonov. Sound polymorphic type inference for objects. In ACM Conf. Object-Oriented Programming: Systems, Languages and Applications, pages 169–184, October 1995.
M. Ellis and B. Stroustrup. The Annotated C ++ Reference Manual. Addison-Wesley, 1990.
K. Fisher. Type Systems for object-oriented programming languages. PhD thesis, Stanford University, 1996. Available as Stanford Computer Science Technical Report number STAN-CS-TR-98-1602.
K. Fisher, F. Honsell, and J.C. Mitchell. A lambda calculus of objects and method specialization. Nordic J. Computing (formerly BIT), 1:3–37, 1994. Preliminary version appeared in Proc. IEEE Symp. on Logic in Computer Science, 1993, 26–38.
K. Fisher and J.C. Mitchell. A delegation-based object calculus with subtyping. In Proc. 10th Int'l Conf. Fundamentals of Computation Theory (FCT'95), pages 42–61. Springer LNCS 965, 1995.
K. Fisher and J.C. Mitchell. The development of type systems for object-oriented languages. Theory and Practice of Object Systems, 1(3):189–220, 1995. Preliminary version appeared in TACS '94 proceedings.
K. Fisher and J.C. Mitchell. On the relationship between classes, objects, and data abstraction. Theory and Practice of Object Systems, 4(1):3–25, 1998. Special Issue on Third Workshop on Foundations of Object-Oriented Languages (FOOL 3). Preliminary version appeared in Marktoberdorf '97 proceedings.
R. Harper and M. Lillibridge. A type-theoretic approach to higher-order modules with sharing. In Proc. 21st ACM Symp. on Principles of Programming Languages, 1994.
M. Hofmann and B.C. Pierce. Positive subtyping. Information and Computation, 126(1):11–33, 1996. Preliminary version appeared in Proc. 22nd ACM Symp. on Principles of Programming Languages, 1995.
D. Katiyar, D. Luckham, and J.C. Mitchell. A type system for prototyping languages. In Proc. 21st ACM Symp. on Principles of Programming Languages, 1994.
L. Liquori. An extended theory of primitive objects: First and second order systems. Technical Report CS-23-96, Dipartimento di Informatica, Universitá di Torino, 1996. A portion of this work appears in ECOOP '97 Proceedings, LNCS 1241.
B. Meyer. Eiffel: The Language. Prentice-Hall, 1992.
B.C. Pierce and D.N. Turner. Statically typed friendly functions via partially abstract types. Technical Report ECS-LFCS-93-256, University of Edinburgh, LFCS, April 1993. Also available as INRIA-Rocquencourt Rapport de Recherche No. 1899.
B.C. Pierce and D.N. Turner. Simple type-theoretic foundations for object-oriented programming. Journal of Functional Programming, 4(2):207–248, 1994. Preliminary version appeared in Proc. 20th ACM Symp. on Principles of Programming Languages, 1993, under the title “Object-oriented programming without recursive types”.
J.H. Reppy and J.G. Riecke. Classes in Object ML via modules, 1996. Presented at FOOL3 workshop.
J.G. Riecke and C. Stone. Privacy via subsumption. In Proc. 5th Annual FOOL Workshop, pages 9.1–9.10, January 1998.
B. Stroustrup. The Design and Evolution of C ++. Addison-Wesley, 1994. Chapter 3: The birth of C++.
M. Wand. Complete type inference for simple objects. In Proc. IEEE Symp. on Logic in Computer Science, pages 37–44, 1987. Corrigendum in Proc. IEEE Symp. on Logic in Computer Science, page 132, 1988.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1998 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Bono, V., Fisher, K. (1998). An imperative, first-order calculus with object extension. In: Jul, E. (eds) ECOOP’98 — Object-Oriented Programming. ECOOP 1998. Lecture Notes in Computer Science, vol 1445. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0054104
Download citation
DOI: https://doi.org/10.1007/BFb0054104
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-64737-9
Online ISBN: 978-3-540-69064-1
eBook Packages: Springer Book Archive