We propose a new approach to adding objects to Standard ML (SML) based on explicit declarations of object types, object constructors, and subtyping relationships, with a generalization of the SML case statement to a "typecase" on object types. The language, called Object ML (OML), has a type system that conservatively extends the SML type system, preserves sound static typing, and permits type inference. The type system sacrifices some of the expressiveness found in recently proposed schemes, but has the virtue of simplicity. We give examples of how features found in other object-oriented languages can be emulated in OML, discuss the formal properties of OML, and describe some implementation issues. Keywords: Programming language design, object-oriented programming, functional programming, Standard ML. 1 Introduction A fundamental tension of language design is "keeping the language small" versus "providing support for common idioms. " This fundamental tension can be seen clearly in S...
user correction - Legacy Corrections
In 1996 ACM SIGPLAN Conference on Programming Language Design and Implementation