Programming Objects with ML-ART, an Extension to ML with Abstract and Record Types

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.

[1]  Luca Cardelli,et al.  Operations on Records , 1989, Mathematical Foundations of Programming Semantics.

[2]  Luca Cardelli,et al.  Subtyping recursive types , 1991, POPL '91.

[3]  John C. Mitchell,et al.  ML with extended pattern matching and subtypes , 1988, LISP and Functional Programming.

[4]  Andreas V. Hense An O´small interpreter based on denotational semantics , 1991 .

[5]  Martín Abadi,et al.  A Theory of Primitive Objects - Scond-Order Systems , 1994, ESOP.

[6]  Kim B. Bruce Safe type checking in a statically-typed object-oriented programming language , 1993, POPL '93.

[7]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Information and Computation.

[8]  Didier Rémy Syntactic theories and the algebra of record terms , 1992 .

[9]  Jon L. White Proceedings of the 1992 ACM conference on LISP and functional programming , 1992 .

[10]  Didier Rémy,et al.  Projective ML , 1992, LFP '92.

[11]  A. K. Wmght Polymorphism for imperative languages without imperative types , 1993 .

[12]  Martin Odersky,et al.  Polymorphic type inference and abstract data types , 1994, TOPL.

[13]  Robin Milner,et al.  Definition of standard ML , 1990 .

[14]  Thierry Le Sergent,et al.  Programming with Behaviors in an ML Framework - The Syntax and Semantics of LCS , 1994, ESOP.

[15]  Benjamin C. Pierce,et al.  Object-oriented programming without recursive types , 1993, POPL '93.

[16]  John C. Mitchell,et al.  A lambda calculus of objects and method specialization , 1993, [1993] Proceedings Eighth Annual IEEE Symposium on Logic in Computer Science.

[17]  Alexander Aiken,et al.  Type inclusion constraints and type inference , 1993, FPCA '93.

[18]  Alberto Martelli,et al.  An Efficient Unification Algorithm , 1982, TOPL.

[19]  Roberto Di Cosmo,et al.  Type isomorphisms in a type-assignment framework , 1992, POPL '92.

[20]  Andrew Wright Polymorphism for Imperative Languages without Imperative Types , 1993 .

[21]  Didier Rémy,et al.  Typing record concatenation for free , 1992, POPL '92.

[22]  Peter Buneman,et al.  Type inference in a database programming language , 1988, LISP and Functional Programming.

[23]  Roberto Di Cosmo,et al.  Deciding type isomorphisms in a type-assignment framework , 1993, Journal of Functional Programming.

[24]  Robert Harper,et al.  Extensible records without subsumption , 1990 .

[25]  Andreas V. Hense Wrapper Semantics of an Object-Oriented Programming Language with State , 1991, TACS.

[26]  Didier Rémy,et al.  Type inference for records in natural extension of ML , 1994 .

[27]  Matthias Felleisen,et al.  A Syntactic Approach to Type Soundness , 1994, Inf. Comput..

[28]  Mitchell Wand,et al.  Complete Type Inference for Simple Objects , 1987, LICS.