An extension of Standard ML modules with subtyping and inheritance
Abstract:
We describe a general module language integrating abstract
data types, specifications and object-oriented concepts. The
framework is based on the Standard ML module system, with three main
extensions: subtyping, a form of object derived from ML
structures, and inheritance primitives.
The language aims at supporting a range of programming styles,
including mixtures of object-oriented programming and
programs built around specified algebraic or higher-order
abstract data types.
We separate specification from implementation, and
provide independent inheritance mechanisms for each.
In order to support binary operations on
objects within this framework, we introduce
internal interfaces which govern the way that function
components of one structure may access components of another.
The language design has been tested by writing
a number of program examples; an implementation is under development
in the context of a larger project.