The Recursive Record Semantics of Objects Revisited

Extended Abstract
  • Gérard Boudol
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2028)


In a call-by-value language, representing objects as recursive records requires using an unsafe fixpoint. We design, for a core language including extensible records, a type system which rules out unsafe recursion and still supports the reconstruction of a principal type. We illustrate by means of various examples the expressive power of this language with respect to object-oriented programming constructs.


Type System Record Type Principal Type Typing Context Degree Expression 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. [1]
    M. Abadi, L. Cardelli, A Theory of Objects, Springer-Verlag (1996).Google Scholar
  2. [2]
    D. Ancona, E. Zucca, A theory of mixin modules: basic and derived operators, Math. Struct. in Comput. Sci. Vol. 8 (1998) 401–446.zbMATHCrossRefMathSciNetGoogle Scholar
  3. [3]
    V. Bono, A. Patel, V. Shmatikov, J. Mitchell, A core calculus of classes and objects, MFPS’99, Electronic Notes in Comput. Sci. Vol. 20 (1999).Google Scholar
  4. [4]
    V. Bono, A. Patel, V. Shmatikov, J. Mitchell, A core calculus of classes and mixins, ECOOP’99, Lecture Notes in Comput. Sci. 1628 (1999) 43–66.Google Scholar
  5. [5]
    G. Bracha, W. Cook, Mixin-based inheritance, ECOOP/OOPSLA’90 (1990) 303–311.Google Scholar
  6. [6]
    K. Bruce, Safe type checking in a statically-typed object-oriented programming language, POPL’93 (1993) 285–298.Google Scholar
  7. [7]
    K. Bruce, L. Petersen, A. Fiech, Subtyping is not a good “match” for object-oriented languages, ECOOP’97, Lecture Notes in Comput. Sci. 1241 (1997) 104–127.Google Scholar
  8. [8]
    L. Cardelli, A semantics of multiple inheritance, Semantics of Data Types, Lecture Notes in Comput. Sci. 173 (1984) 51–67. Also published in Information and Computation, Vol. 76 (1988).Google Scholar
  9. [9]
    L. Cardelli, J.C. Mitchell, Operations on records, in [18], 295–350.Google Scholar
  10. [10]
    W. Cook, J. Palsberg, A denotational semantics of inheritance and its correctness, OOPSLA’89, ACM SIGPLAN Notices Vol. 24 No. 10 (1989) 433–443.CrossRefGoogle Scholar
  11. [11]
    W. Cook, W. Hill, P. Canning, Inheritance is not subtyping, in [18], 497–517.Google Scholar
  12. [12]
    L. Damas, R. Milner, Principal type-schemes for functional programs, POPL’82 (1982) 207–212.Google Scholar
  13. [13]
    J. Eifrig, S. Smith, V. Trifonov, A. Zwarico, An interpretation of typed OOP in a langage with state, LISP and Symbolic Computation Vol. 8 (1995) 357–397.CrossRefGoogle Scholar
  14. [14]
    K. Fisher, Types Systems for Object-Oriented Programming Languages, PhD Thesis, Stanford University (1996).Google Scholar
  15. [15]
    K. Fisher, F. Honsell, J. Mitchell, A lambda calculus of objects and method specialization, LICS’93 (1993) 26–38.Google Scholar
  16. [16]
    K. Fisher, J. Mitchell, The development of type systems for object-oriented languages, Theory and Practice of Object Systems Vol. 1, No. 3 (1996) 189–220.Google Scholar
  17. [17]
    M. Flatt, S. Krishnamurthi, M. Felleisen, Classes and Mixins, POPL’98 (1998) 171–183.Google Scholar
  18. [18]
    C. Gunter, J. Mitchell (Eds.), Theoretical Aspects of Object-Oriented Programming, The MIT Press (1994).Google Scholar
  19. [19]
    L.A. Jategaonkar, J. Mitchell, Type inference with extended pattern matching and subtypes, Fundamenta Informaticae Vol. 19 (1993) 127–166.zbMATHMathSciNetGoogle Scholar
  20. [20]
    S. Kamin, Inheritance in Smalltalk-80: a denotational definition, POPL’88 (1988) 80–87.Google Scholar
  21. [21]
    X. Leroy, D. Doligez, J. Garrigue, D. Rùmy, J. Vouillon, The Objective Caml System, release 3:00, Documentation and user’s manual, available at (2000).
  22. [22]
    O.L. Madsen, B. Møller Pedersen, Virtual Classes: A powerful mechanism in object-oriented programming, OOPSLA’89, ACM SIGPLAN Notices Vol. 24 No. 10 (1989) 397–406.CrossRefGoogle Scholar
  23. [23]
    B. Meyer, Genericity versus inheritance, OOPSLA’86, ACM SIGPLAN Notices Vol. 21 No. 11 (1986) 391–405.CrossRefGoogle Scholar
  24. [24]
    R. Milner, A theory of type polymorphism in programming, J. of Computer and System Sciences Vol. 17 (1978) 348–375.zbMATHCrossRefMathSciNetGoogle Scholar
  25. [25]
    B.C. Pierce, D. Turner, Simple type-theoretic foundations for object-oriented programming, J. of Functional Programming Vol. 4 No. 2 (1994) 207–247.zbMATHCrossRefGoogle Scholar
  26. [26]
    D. Rémy, Programming with ML-ART: an extension to ML with abstract and record types, TACS’94, Lecture Notes in Comput. Sci. 789 (1994) 321–346.Google Scholar
  27. [27] D. Rémy, J. Vouillon, Objective ML: an effective object-oriented extension of ML, Theory and practice of Objects Systems, Vol. 4, No. 1 (1998) 27–50.CrossRefGoogle Scholar
  28. [28] A. Snyder, Encapsulation and inheritance in object-oriented programming languages, OOPSLA’86, ACM SIGPLAN Notices Vol. 21 No. 11 (1986) 38–45.CrossRefGoogle Scholar
  29. [29] A. Taivalsaari, On the notion of inheritance, ACM Computing Surveys Vol. 28 No. 3 (1996) 438–479.CrossRefGoogle Scholar
  30. [30] M. Wand, Complete type inference for simple objects, LICS’87 (1987) 37–44.Google Scholar
  31. [31] M. Wand, Type inference for objects with instance variables and inheritance, in [18], 97–120.Google Scholar
  32. [32] A. Wright, M. Felleisen, A syntactic approach to type soundness, Information and Computation Vol. 115 No. 1 (1994) 38–94.zbMATHCrossRefMathSciNetGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2001

Authors and Affiliations

  • Gérard Boudol
    • 1
  1. 1.INRIASophia AntipolisFrance

Personalised recommendations