AspectML - Aspect-oriented Functional Programming Language Research

Princeton University

University of Pennsylvania


Our research is to extend functional programming languages with aspect-oriented features. It currently consists of three projects, the original theory of aspects, research on harmless advice, and research on polymorphic advice.

The original research on the theory of aspects defined the semantics of MinAML, an idealized aspect-oriented programming language, by giving a type-directed translation from a user-friendly external language to a compact, well-defined core language. The core language extends the simply-typed lambda calculus with two central new abstractions: explicitly labeled program points and first-class advice. The labels serve both to trigger advice and to mark continuations that the advice may return to.

The harmless advice project defines an object-oriented language with harmless aspect-oriented advice. A piece of harmless advice is a computation that, like ordinary aspect-oriented advice, executes when control reaches a designated control-flow point. However, unlike ordinary advice, harmless advice is designed to obey a weak non-interference property. Harmless advice may change the termination behavior of computations and use I/O, but it does not otherwise influence the final result of the mainline code. The benefit of harmless advice is that it facilitates local reasoning about program behavior. In addition, programmers may add new pieces of harmless advice to pre-existing programs in typical ``after-the-fact'' aspect-oriented style without fear they will break important data invariants used by the mainline code.

The polymorphic advice project defines PolyAML, a typed functional, aspect-oriented programming language. The main contribution of PolyAML is the seamless integration of polymorphism, run-time type analysis and aspect-oriented programming language features. In particular, PolyAML allows programmers to define type-safe polymorphic advice using pointcuts constructed from a collection of polymorphic join points. PolyAML also comes equipped with a type inference algorithm that conservatively extends Hindley-Milner type inference.


Jay Ligatti, David Walker, and Steve Zdancewic.
In Pascal Fradet and Ralf Lämmel, editors, Science of Computer Programming, special issue on Foundations of Aspect-Oriented Programming. Elsevier, Winter 2005/2006. To appear.


Princeton University

Daniel S Dantas
David Walker

University of Pennsylvania

Geoff Washburn
Stephanie Weirich
Steve Zdancewic

University of South Florida

Jay Ligatti