Hostname: page-component-78c5997874-g7gxr Total loading time: 0 Render date: 2024-11-15T02:01:23.815Z Has data issue: false hasContentIssue false

Baby Modula-3 and a theory of objects

Published online by Cambridge University Press:  07 November 2008

Martin Abadi
Affiliation:
Systems Research Center, Digital Equipment Corp., Palo Alto, CA 94301, USA
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.

Baby Modula-3 is a small, functional, object-oriented programming language. It is intended as a vehicle for explaining the core of Modula-3 from a biased perspective: Baby Modula-3 includes the main features of Modula-3 related to objects, but not much else. To the theoretician, Baby Modula-3 provides a tractable, concrete example of an object-oriented language, and we use it to study the formal semantics of objects. Baby Modula-3 is defined with a structured operational semantics and with a set of static type rules. A denotational semantics guarantees the soundness of this definition.

Type
Research Article
Copyright
Copyright © Cambridge University Press 1994

References

Abadi, M.Plotkin, G. (1990) A per model of polymorphism and recursive types. In: Proceedings of the Fifth Annual Symposium on Logic In Computer Science Conference, 355365. IEEE.Google Scholar
Amadio, R.Cardelli, L. (1991) Subtyping recursive types. In: Proceedings of the Eighteenth Annual ACM Symposium on Principles of Programming Languages, 104118. ACM.CrossRefGoogle Scholar
Amadio, R. (1991) Recursion over realizability structures. Information and Computation, 91(1):5585.CrossRefGoogle Scholar
Bainbridge, E.S., Freyd, P.J., Scedrov, A. and Scott, P.J. (1990) Functorial polymorphism, Theoretical Computer Science, 70(1): 3564. Corrigendum in (3) 71, April 1990, p 431.CrossRefGoogle Scholar
Bruce, K. (1993) Safe type checking in a statically-typed object-oriented programming language In: Proceedings of the Twentieth Annual ACM Symposium on Principles of Programming Languages, 285298. ACM.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 No. 242. Springer-Verlag.Google Scholar
Cardelli, L., Donahue, J., Glassman, L., Jordan, M., Kalsow, B. and Nelson, G. (1988) Modula-3 report. Research Report 31, Digital Equipment Corporation Systems Research Center.Google Scholar
Cardelli, L. (1992) Extensible records in a pure calculus of subtyping. In: Gunter, C. and Mitchell, J.C., eds., Theoretical Aspects of Object-oriented Programming: Types, Semantics and Language Design. MIT Press, to appear. (A preliminary version has appeared as SRC Research Report No. 81.)Google Scholar
Cardone, L. and Nelson, G. (1993) Structured command semantics. Draft.Google Scholar
Cardone, F. (1989) Relational semantics for recursive types and bounded quantification. In Ausiello, G., Dezani-Ciancaglini, M. and Ronchi Della Rocca, S., editors, Automata, Languages and Programming. Lecture Notes in Computer Science No. 372, pages 164178. Springer-Verlag.CrossRefGoogle Scholar
Castagna, G., Ghelli, G. and Longo, G. (1992a) A calculus for overloaded functions with subtyping. Technical Report LIENS-92-4, Ecole Normale Supérieure.CrossRefGoogle Scholar
Castagna, G. (1992b) Strong typing in object-oriented paradigms. Technical Report LIENS-92-11, Ecole Normale Supérieure.Google Scholar
Cook, W.R. (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: Seventeenth Annual ACM Symposium on Principles of Programming Languages, 125135. ACM.CrossRefGoogle Scholar
Girard, J.-Y. (1972) Interprétation Fonctionnelle et Elimination des Coupures de l'Arithmétique d'Ordre Supérieur. Thèse de doctorat d'état, Université Paris VII.Google Scholar
Gunter, C. (1992) Semantics of Programming Languages: Structures and Techniques. Foundations of Computing Series. MIT Press, Cambridge, MA.Google Scholar
Guttag, J.V. and Horning, J.J., eds. (1993) Larch: Languages and Tools for Formal Specification. Texts and monographs in computer science. Springer-Verlag.CrossRefGoogle Scholar
MacQueen, D., Plotkin, G. and Sethi, R. (1986) An ideal model for recursive polymorphic types. Information and Control, 71: 95130.CrossRefGoogle Scholar
Mitchell, J.C. (1990) Toward a typed foundation for method specialization and inheritance. In: Seventeenth Annual ACM Symposium on Principles of Programming Languages, 109124. ACM.CrossRefGoogle Scholar
Mitchell, J.C., Honsell, F. and Fisher, K. (1993) A lambda calculus of objects and method specialization. In: Proceedings of the Eight IEEE Annual Symposium on Logic in Computer Science, 2638. IEEE.Google Scholar
Nelson, G., ed. (1991) Systems Programming in Modula-3. Prentice-Hall.Google Scholar
Pierce, B.C. and Turner, D.N. (1992) Statically typed multi-methods via partially abstract types. Draft.Google Scholar
Pierce, B.C. and Turner, D.N. (1993) Object-oriented programming without recursive types. In: Proceedings of the Twentieth Annual ACM Symposium on the Principles of Programming Languages, 299312. ACM.CrossRefGoogle Scholar
Plotkin, G. (1981) A structural approach to operational semantics. Technical Report DAIMI FN-19, Computer Science Department, Aarhus University, Denmark.Google Scholar
Steele, G.L. (1990) Common Lisp: The Language, 2nd ed.Digital Press, Bedford, MA.Google Scholar
Wand, M. (1987) Complete type inference for simple objects. In: Proceedings of the Second Symposium on Logic in Computer Science, 3744. IEEE. Corrigendum in Proceedings of the Third Symposium on Logic in Computer Science, 132 (1988).Google Scholar
Submit a response

Discussions

No Discussions have been published for this article.