Skip to main content

Programming objects with ML-ART an extension to ML with abstract and record types

  • Conference paper
  • First Online:

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

Abstract

Class-based objects can be programmed directly and efficiently in a simple extension to ML. The representation of objects, based on abstract and record types, allows all usual operations such as multiple inheritance, object returning capability, and message transmission to themselves as well as to their super classes. There is, however, no implicit coercion from objects to corresponding ones of super-classes. A simpler representation of objects without recursion on values is also described. The underlying language extends ML with recursive types, existential and universal types, and mutable extensible records. The language ML-ART is given with a call-by-value semantics for which type soundness is proved.

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

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Roberto M. Amadio and Luca Cardelli. Subtyping recursive types. In Proceedings of the Eighteenth ACM Symposium on Principles of Programming Languages, pages 104–118, Orlando, FL, January 1991. Also available as DEC Systems Research Center Research Report number 62, August 1990.

    Google Scholar 

  2. Martin Abadi and Luca Cardelli. A theory of primitive objects. In International Symposium on Theoretical Aspects of Computer Software, April 1994.

    Google Scholar 

  3. Alexander Aiken. Type inclusion constraints and type inference. In Conference on Functional Programming Languages and Computer Architecture, pages 31–41. ACM press, 1993.

    Google Scholar 

  4. Bernard Berthomieu. Programming with behaviors in an ML framework, the syntax and semantics of lcs. Research Report 93-133, LAAS-CNRS, 7, Avenue du Colonnel Roche, 31077 Toulouse, France, March 1993.

    Google Scholar 

  5. Kim B. Bruce. Safe type checking in a statically typed object-oriented programming language. In Proceedings of the Twentieth ACM Symposium on Principles of Programming Languages, January 1993.

    Google Scholar 

  6. Luca Cardelli. A semantics of multiple inheritance. In Semantics of Data Types, volume 173 of Lecture Notes in Computer Science, pages 51–68. Springer Verlag, 1984. Also in Information and Computation, 1988.

    Google Scholar 

  7. Lucky Chillan. Une extension de ML avec des aspects orientés objets. Thèse de doctorat, Université de Paris 7, Place Jussieu, Paris, France, 1993. Forthcoming.

    Google Scholar 

  8. Luca Cardelli and John C. Mitchell. Operations on records. In Fifth International Conference on Mathematical Foundations of Programming Semantics, 1989.

    Google Scholar 

  9. Roberto Di Cosmo. Deciding type isomorphisms in a type assignment framework. Journal of Functional Programming, 1992. To appear in the Special Issue on ML.

    Google Scholar 

  10. Roberto Di Cosmo. Isomorphisms of Types. Tesi di dottorato, Dipartimento di Informatica, Universitá di Pisa, 40, Corso Italia-56100 Pisa-Italy, January 1993.

    Google Scholar 

  11. Carl Gunter, Didier Rémy, and John Riecke. Syntactic type soundness with prompt, callcc and state. Manuscript, 1993.

    Google Scholar 

  12. Andreas V. Hense. An O'small interpreter based on denotational semantics. Technical Report A 07/91, Universitiat des Saarlandes, Fachbereich 14, 1991.

    Google Scholar 

  13. Andreas V. Hense. Wrapper semantics of an object oriented programming language with state. Theoretical Aspects of Computer Science, Lecture notes in Computer Science(526), September 1991.

    Google Scholar 

  14. Robert Harper, Robin Milner, and Mads Tofte. The definition of Standard ML. The MIT Press, 1991.

    Google Scholar 

  15. Robert W. Harper and Benjamin C. Pierce. Extensible records without subsumption. Technical Report CMU-CS-90-102, Carnegie Mellon University, Pittsburg, Pensylvania, February 1990.

    Google Scholar 

  16. Martin Hofmann and Benjamin Pierce. An abstract view of objects and subtyping (preliminary report). Technical Report ECS-LFCS-92-226, University of Edinburgh, LFCS, 1992.

    Google Scholar 

  17. Gérard Huet. Résolution d'équations dans les langages d'ordre 1,2, ...,ω. Thèse de doctorat d'état, Université Paris 7, 1976.

    Google Scholar 

  18. Lalita A. Jategaonkar and John C. Mitchell. ML with extended pattern matching and subtypes (preliminary version). In Proceedings of the ACM Conference on Lisp and Functional Programming, pages 198–211, Snowbird, Utah, July 1988.

    Google Scholar 

  19. Konstantin Läufer. Polymorphic Type Inference and Abstract Data Types. PhD thesis, New York University, 1992.

    Google Scholar 

  20. Xavier Leroy and Michel Mauny. The caml light system, version 0.5. documentation and users' guide. Logiciel 3, INRIA-Rocquencourt, BP 105, F-78 153 Le Chesnay Cedex, 1992.

    Google Scholar 

  21. Konstantin Läufer and Martin Odersky. An extension of ML with first-class abstract types. In Proceedings of the ACM SIGPLAN Workshop on ML and its Applications, 1992.

    Google Scholar 

  22. John C. Mitchell, Furio Honsell, and Kathleen Fisher. A lambda calculus of objects and method specialization. In 1993 IEEE Symposium on Logic in Computer Science, June 1993.

    Google Scholar 

  23. Alberto Martelli and Ugo Montanari. An efficient unification algorithm. ACM Transactions on Programming Languages and Systems, 4(2):258–282, 1982.

    Google Scholar 

  24. Atsushi Ohori and Peter Buneman. Type inference in a database langage. In ACM Conference on LISP and Functional Programming, pages 174–183, 1988.

    Google Scholar 

  25. Atsushi Ohori. Extending ML polymorphism to record structure. Technical report, University of Glasgow, 1990.

    Google Scholar 

  26. Benjamin C. Pierce. Mutable objects. Unpublished note, June 1993.

    Google Scholar 

  27. Benjamin C. Pierce and David N. Turner. Object-oriented programming without recursive types. In Proceedings of the Twentieth ACM Symposium on Principles of Programming Languages, January 1993.

    Google Scholar 

  28. Didier Rémy. Extending ML type system with a sorted equational theory. Research Report 1766, Institut National de Recherche en Informatique, BP 105, F-78 153 Le Chesnay Cedex, 1992.

    Google Scholar 

  29. Didier Rémy. Projective ML. In 1992 ACM Conference on Lisp and Functional Programming, pages 66–75, New-York, 1992. ACM press.

    Google Scholar 

  30. Didier Rémy. Syntactic theories and the algebra of record terms. Research Report 1869, Institut National de Recherche en Informatique, BP 105, F-78 153 Le Chesnay Cedex, 1993.

    Google Scholar 

  31. Didier Rémy. Type inference for records in a natural extension of ML. In Carl A. Gunter and John C. Mitchell, editors, Theoretical Aspects Of ObjectOriented Programming. Types, Semantics and Language Design. MIT Press, 1993. To appear.

    Google Scholar 

  32. Didier Rémy. Typing record concatenation for free. In Carl A. Gunter and John C. Mitchell, editors, Theoretical Aspects Of Object-Oriented Programming. Types, Semantics and Language Design. MIT Press, 1993. To appear.

    Google Scholar 

  33. Mitchell Wand. Complete type inference for simple objects. In D. Gries, editor, Second Symposium on Logic In Computer Science, pages 207–276, Ithaca, New York, June 1987. IEEE Computer Society Press.

    Google Scholar 

  34. Andrew K. Wright and Matthias Felleisen. A syntactic approach to type soundness. Technical Report TR91-160, Rice University, 1991.

    Google Scholar 

  35. Andrew K. Wright. Polymorphism for imperative languages without imperative types. Technical Report 93-200, Rice University, February 1993.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Masami Hagiya John C. Mitchell

Rights and permissions

Reprints and permissions

Copyright information

© 1994 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Rémy, D. (1994). Programming objects with ML-ART an extension to ML with abstract and record types. In: Hagiya, M., Mitchell, J.C. (eds) Theoretical Aspects of Computer Software. TACS 1994. Lecture Notes in Computer Science, vol 789. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-57887-0_102

Download citation

  • DOI: https://doi.org/10.1007/3-540-57887-0_102

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-57887-1

  • Online ISBN: 978-3-540-48383-0

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics