Modularization Constructs for Functional and Object-Oriented Languages

Principal Investigators: Gerald Baumgartner, Vincent F. Russo

This research focuses on designing modularization constructs that incorporate the best features found among modularization constructs of functional and object-oriented languages. The design is guided by an analysis of object-oriented design patterns. Since design patterns are distilled from many real systems to catalog common programming practice, this approach allows us to tailor the design of our modularization constructs to better support the construction of many real systems.

Our current catalog of language constructs includes subtyping separate from inheritance, lexically scoped closure objects independent of classes, and multimethod dispatch. The proposed constructs and mechanisms are not radically new, but rather are adopted from a variety of languages and combined in a new, orthogonal manner. We also have an implementation of a conservative C++ extension for abstracting types and for decoupling subtyping and inheritance. This extension gives the user more of the flexibility of dynamic typing while retaining the efficiency and security of static typing. It actually allows subtype polymorphism to be implemented more efficiently than with virtual functions.

We are investigating an extension of this approach to distributed programming and an extension with parametric polymorphism and compile-time type inference in the style of ML.