AspectML - Aspect-oriented Functional Programming Language Research
Princeton University
University of Pennsylvania
Objectives
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.
Daniel S. Dantas, David Walker, Geoffrey Washburn, and Stephanie Weirich. ACM Transactions on Programming Languages and Systems. June 2008. TOPLAS '08: Interpreter Implementation / Security Case Study
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.
Daniel S. Dantas, David Walker, Geoffrey Washburn and Stephanie Weirich. ACM International Conference on Functional Programming. September 2005. ICFP '05: Conference Presentation / Interpreter Implementation
Daniel S. Dantas and David Walker. ACM SIGPLAN International Workshop on Foundations of Object-Oriented Languages. January 2005. FOOL '05: Workshop Presentation
David Walker, Steve Zdancewic, and Jay Ligatti. 8th ACM SIGPLAN International Conference on Functional Programming, August 2003. ICFP '03: Conference Presentation