Skip to main content
    • Aa
    • Aa
  • Get access
    Check if you have access via personal or institutional login
  • Cited by 25
  • Cited by
    This article has been cited by the following publications. This list is generated based on data provided by CrossRef.

    Ryu, Sukyoung 2016. ThisType for Object-Oriented Languages. ACM Transactions on Programming Languages and Systems, Vol. 38, Issue. 3, p. 1.

    Rowe, Reuben N.S. and van Bakel, S.J. 2014. Semantic Types and Approximation for Featherweight Java. Theoretical Computer Science, Vol. 517, p. 34.

    Saito, Chieri and Igarashi, Atsushi 2013. Matching MyType to subtyping. Science of Computer Programming, Vol. 78, Issue. 7, p. 933.

    Duggan, Dominic 2005. Type-based hot swapping of running modules. Acta Informatica, Vol. 41, Issue. 4-5, p. 181.

    Glimming, Johan and Ghani, Neil 2005. Difunctorial Semantics of Object Calculus. Electronic Notes in Theoretical Computer Science, Vol. 138, Issue. 2, p. 79.

    Lumpe, M. and Schneider, J.-G. 2005. A form-based meta-model for software composition. Science of Computer Programming, Vol. 56, Issue. 1-2, p. 59.

    League, C. Zhong Shao, and Trifonov, V. 2003. Foundations of Intrusion Tolerant Systems, 2003 [Organically Assured and Survivable Information Systems]. p. 35.

    Riecke, Jon G. and Stone, Christopher A. 2002. Privacy via Subsumption. Information and Computation, Vol. 172, Issue. 1, p. 2.

    Rinat, Ran 2002. Type-Safe Covariant Specialization with Generalized Matching. Information and Computation, Vol. 177, Issue. 1, p. 90.

    Lago, Joaquı́n Mateos and Artalejo, Mario Rodrı́guez 2001. A declarative framework for object-oriented programming with genetic inheritance. Theoretical Computer Science, Vol. 269, Issue. 1-2, p. 363.

    Colnet, D. and Liquori, L. 2000. Proceedings 37th International Conference on Technology of Object-Oriented Languages and Systems. TOOLS-Pacific 2000. p. 190.

    Baldan, Paolo Ghelli, Giorgio and Raffaetà, Alessandra 1999. Basic Theory of F-Bounded Quantification. Information and Computation, Vol. 153, Issue. 2, p. 173.

    Bono, Viviana and Bugliesi, Michele 1999. Matching for the lambda calculus of objects. Theoretical Computer Science, Vol. 212, Issue. 1-2, p. 101.

    Bono, Viviana Patel, Amit Shmatikov, Vitaly and Mitchell, John 1999. A Core Calculus of Classes and Objects. Electronic Notes in Theoretical Computer Science, Vol. 20, p. 28.

    Bruce, Kim B. Cardelli, Luca and Pierce, Benjamin C. 1999. Comparing Object Encodings. Information and Computation, Vol. 155, Issue. 1-2, p. 108.

    Benattou, M. and Lakhal, L. 1997. Proceedings of the Third Basque International Workshop on Information Technology - BIWIT'97 - Data Management Systems. p. 159.

    Ghelli, Giorgio 1997. Termination of SystemF-bounded: A Complete Proof. Information and Computation, Vol. 139, Issue. 1, p. 39.

    Pierce, Benjamin and Steffen, Martin 1997. Higher-order subtyping. Theoretical Computer Science, Vol. 176, Issue. 1-2, p. 235.

    Castagna, Giuseppe 1996. Integration of parametric and “ad hoc” second order polymorphism in a calculus with subtyping. Formal Aspects of Computing, Vol. 8, Issue. 3, p. 247.

    Abadi, Martín and Cardelli, Luca 1995. A theory of primitive objects. Science of Computer Programming, Vol. 25, Issue. 2-3, p. 81.


A paradigmatic object-oriented programming language: Design, static typing and semantics

  • Kim B. Bruce (a1)
  • DOI:
  • Published online: 07 November 2008

To illuminate the fundamental concepts involved in object-oriented programming languages, we describe the design of TOOPL, a paradigmatic, statically-typed, functional, object-oriented programming language which supports classes, objects, methods, hidden instance variables, subtypes and inheritance.

It has proven to be quite difficult to design such a language which has a secure type system. A particular problem with statically type checking object-oriented languages is designing typechecking rules which ensure that methods provided in a superclass will continue to be type correct when inherited in a subclass. The type-checking rules for TOOPL have this feature, enabling library suppliers to provide only the interfaces of classes with actual executable code, while still allowing users to safely create subclasses. To achieve greater expressibility while retaining type-safety, we choose to separate the inheritance and subtyping hierarchy in the language.

The design of TOOPL has been guided by an analysis of the semantics of the language, which is given in terms of a model of the F-bounded second-order lambda calculus with fixed points at both the element and type level. This semantics supports the language design by providing a means to prove that the type-checking rules are sound, thus guaranteeing that the language is type-safe.

While the semantics of our language is rather complex, involving fixed points at both the element and type level, we believe that this reflects the inherent complexity of the basic features of object-oriented programming languages. Particularly complex features include the implicit recursion inherent in the use of the keyword, self, to refer to the current object, and its corresponding type, MyType. The notions of subclass and inheritance introduce the greatest semantic complexities, whereas the notion of subtype is more straightforward to deal with. Our semantic investigations lead us to recommend caution in the use of inheritance, since small changes to method definitions in subclasses can result in major changes to the meanings of the other methods of the class.

Linked references
Hide All

This list contains references from the content that can be linked to their source. For a full set of references and notes please see the PDF or HTML where available.

M. Abadi (1994) Baby modula-3 and a theory of objects. J. Functional Program. to appear.

R.M. Amadio (1991) Recursion over realizability structures. Infor. and Computation 91(1): 5586.

R. Amadio and L. Cardelli (1993) Subtyping recursive types. ACM TOPLAS 15(4): 575631.

P. America (1987) Inheritance and subtyping in a parallel object-oriented language. In: J. Bezivin , Eds., Proc. ECOOP '87 – Lecture Notes in Computer Science 276, pp. 234242, Springer.

P. America , J. de Bakker , J. Kok and J. Rutten (1989) Denotational semantics of a parallel object-oriented language. Infor. and Computation 83(2): 152205.

P. America and F. van der Linden (1990) A parallel object-oriented language with inheritance and subtyping. In: OOPSLA-ECOOP '90 Proceedings, pp. 161168, October. (ACM SIGPLAN Not.25(10).)

U. Breazu-Tannen , T. Coquand , C.A. Gunter and A. Scedrov (1991) Inheritance and implicit coercion. Infor. and Computation 93(1): 172221.

K. Bruce (1992) The equivalence of two semantic definitions of inheritance in object-oriented languages. In: S. Brookes M. Main , A. Melton , M. Mislove and D. Schmidt , Eds., Proc. 7th Int. Conf. on Mathematical Foundations of Program. Semantics – Lecture Notes in Computer Science 598, pp. 102124, Springer.

K. Bruce and G. Longo (1990) A modest model of records, inheritance and bounded quantification. Infor. and Computation 87(1/2): 196240.

K.B. Bruce , A.R. Meyer and J.C. Mitchell (1990) The semantics of second-order lambda calculus. Infor. and Computation 85(1): 76134. (Reprinted in G. Huet, Ed., Logical Foundations of Functional Programming, Addison-Wesley, Reading, MA, 1990, pp. 213–273.)

L. Cardelli (1988a) A semantics of multiple inheritance. Infor. and Computation 76: 138164. (Special issue devoted to Symp. on Semantics of Data Types, Sophia-Antipolis (France), 1984.)

L. Cardelli and J. C. Mitchell (1990) Operations on records. In: Math. Foundations of Prog. Lang. Semantics – Lecture Notes in Computer Science 442, pp. 2252. Springer.

L. Cardelli and P. Wegner (1985) On understanding types, data abstraction, and polymorphism. Comput. Surv. 17(4): 471522.

F. Cardone (1989) Relational semantics for recursive types and bounded quantification. In: ICALP – Lecture Notes in Computer Science 372, pp. 164178, Springer.

S. Danforth and C. Tomlinson (1988) Type theories and object-oriented programming. ACM Comput. Surv. 20(1): 2972.

O. Madsen , B. Magnusson and B. Moller-Pedersen (1990) Strong typing of object-oriented languages revisited. In: OOPSLA-ECOOP Proc., pp. 140150. (ACM SIGPLAN Not.25(10), October.

B. Meyer (1992) Eiffel: The language. Prentice-Hall, Englewood Cliffs, NJ.

J.C. Mitchell (1984) Type inference and type containment. In: Proc. Int. Symp. on Semantics of Data Types – Lecture Notes in Computer Science 173, Sophia-Antipolis, France, pp. 257278, June, Springer.

J.C. Mitchell (1988) Polymorphic type inference and containment. Infor. and Computation 76(2/3): 211249. (Reprinted in G. Huet, Ed., Logical Foundations of Functional Programming, Addison-Wesley, Reading, MA, 1990, pp. 153–194.)

J.C. Mitchell and G.D. Plotkin (1988) Abstract types have existential types. ACM Trans. Program. Lang. and Syst. 10(3): 470502. (Preliminary version appeared in Proc. 12th ACM Symp. on Principles of Program. Lang.)

J. Palsberg and M. Schwartzback (1990) Type substitution for object-oriented programming. In: OOPSLA-ECOOP Proc., pp. 151160. (ACM SIGPLAN Not.25(10), October.)

J.C. Reynolds (1980) Using category theory to design implicit conversions and generic operators. In N.D. Jones , Ed., Semantics-Directed Compiler Generation – Lecture Notes in Computer Science 94, pp. 2112580, Springer.

P. Wegner (1990) Concepts and paradigms of object-oriented programming. OOPS Messenger 1(1): 787, August.

N. Wirth (1988) The programming language Oberon. Software - Practice and Experience 18: 671690.

Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Journal of Functional Programming
  • ISSN: 0956-7968
  • EISSN: 1469-7653
  • URL: /core/journals/journal-of-functional-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *