Skip to main content

An imperative, first-order calculus with object extension

  • Conference paper
  • First Online:
ECOOP’98 — Object-Oriented Programming (ECOOP 1998)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1445))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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.

    Google Scholar 

  2. M. Abadi and L. Cardelli. A Theory of Objects. Springer, 1996.

    Google Scholar 

  3. 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.

    Article  MATH  MathSciNet  Google Scholar 

  4. K. Arnold and J. Gosling. The Java Programming Language. Addison Wesley, 1996.

    Google Scholar 

  5. G.M. Birtwistle, O.-J. Dahl, B. Myhrhaug, and K. Nygaard. Simula Begin. Studentlitteratur, Box 1717, S-222 01 Lund, Sweden; Auerbach, Philadelphia, 1973.

    Google Scholar 

  6. V. Bono, M. Bugliesi, and L. Liquori. A lambda calculus of incomplete objects. In Proc. MFCS '96, pages 218–229. Springer LNCS 1113, 1996.

    MATH  MathSciNet  Google Scholar 

  7. V. Bono and K. Fisher. A first-order, extensible-object calculus with support for classes. Unpublished manuscript; work-in-progress, 1998.

    Google Scholar 

  8. 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.

    Google Scholar 

  9. 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.

    Google Scholar 

  10. 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.

    Google Scholar 

  11. 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.

    Google Scholar 

  12. 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.

    Google Scholar 

  13. L. Cardelli and P. Wegner. On understanding types, data abstraction, and polymorphism. Computing Surveys, 17(4):471–522, 1985.

    Article  Google Scholar 

  14. A.B. Compagnoni. Higher-Order Subtyping with Intersection Types. PhD thesis, Katholieke Universiteit Nijmegen, 1994.

    Google Scholar 

  15. 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.

    Google Scholar 

  16. M. Ellis and B. Stroustrup. The Annotated C ++ Reference Manual. Addison-Wesley, 1990.

    Google Scholar 

  17. 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.

    Google Scholar 

  18. 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.

    MATH  MathSciNet  Google Scholar 

  19. 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.

    MathSciNet  Google Scholar 

  20. 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.

    Google Scholar 

  21. 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.

    Article  MATH  MathSciNet  Google Scholar 

  22. 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.

    Google Scholar 

  23. 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.

    Article  MATH  MathSciNet  Google Scholar 

  24. 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.

    Google Scholar 

  25. 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.

    Google Scholar 

  26. B. Meyer. Eiffel: The Language. Prentice-Hall, 1992.

    Google Scholar 

  27. 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.

    Google Scholar 

  28. 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”.

    Article  MATH  Google Scholar 

  29. J.H. Reppy and J.G. Riecke. Classes in Object ML via modules, 1996. Presented at FOOL3 workshop.

    Google Scholar 

  30. J.G. Riecke and C. Stone. Privacy via subsumption. In Proc. 5th Annual FOOL Workshop, pages 9.1–9.10, January 1998.

    Google Scholar 

  31. B. Stroustrup. The Design and Evolution of C ++. Addison-Wesley, 1994. Chapter 3: The birth of C++.

    Google Scholar 

  32. 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.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Eric Jul

Rights and permissions

Reprints 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

Publish with us

Policies and ethics