Type-Directed Java

About

Type-directed programming is an important paradigm in the design of
software. By using this form of programming to analyze the
structure of data, many operations, such as serialization, equality
and iterators may be defined once, for all types of data. As
software evolves, these operations need not be updated---they will
automatically adapt to new data forms. Although object-oriented
languages are widely used in the implementation of modern software
systems, they have only primitive support for type-directed
programming. Therefore, this project proposes to adapt and extend
the mechanisms for type-directed programming to those languages.

The specific goals of the project are threefold. The first goal is
to extend the existing theory of type-directed programming to
object-oriented programming languages. The second is to validate
and refine that theory by developing an implementation of an
object-oriented language that supports type-directed
programming. Finally, the third goal is to use this implementation
to investigate new patterns of type-directed programming to inspire
new developments in language support for these patterns.
Experiments with type-directed programming will be included to
better understand its role in programming in the context of
object-oriented languages.

Related projects

AspectML
extends functional programming languages with aspect-oriented
features. Type-directed programming forms an essential part of
AspectML, allowing aspects to be specialized to the type context in
which they are triggered.