This is the main page for our research on pointcut/advice model of aspect-oriented programming (AOP) in monadic setting. We have developed a Haskell AOP library that provides the full pointcut/advice model of AOP into a monadic setting. Read below for further details.
See our follow-up work: Compositional Reasoning About Aspect Interference
Thesis Reviewers: this source code also corresponds to the manuscript
The code for our TAOSD submission can be downloaded here
We developed a novel approach to embed pointcut/advice aspects in a typed functional programming language like Haskell. Aspects are first-class, can be deployed dynamically, and the pointcut language is extensible. Type soundness is guaranteed by exploiting the underlying type system, in particular phantom types and a new anti-unification type class. The use of monads brings type-based reasoning about effects for the first time in the pointcut/advice setting, and makes it possible to modularly extend or modify the aspect language.
The original source of the AOSD 2013 paper can be downloaded here. See the included README file for details.
The source of our FOAL 2013 submission can be downloaded here. This is an updated revision of the previous code with programmable membranes semantics for aspect-oriented programming. See the included README and README-FOAL file for details.
We tested the software in the Haskell Platform version 2012.2.0.0. Consequently, we used the Glasgow Haskell Compiler, GHC, with the following extensions.
The code depends on the following packages:
Which can be installed using the cabal package manager included with the Haskell Platform.
We include the paper examples, and tests used during development. The main difference between the code in the paper and the source code are: