Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
research:software:haskellaop [2012/10/10 15:26] ifigueroresearch:software:haskellaop [2013/06/14 13:30] – removed ifiguero
Line 1: Line 1:
-====== A Typed Monadic Embedding of Aspects ====== 
  
-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. 
- 
- 
- 
-====== Source Code ====== 
-The source can be downloaded {{:research:software:aop2.zip | here}}. See the included README file for details. 
- 
-We tested the software in the [[http://hackage.haskell.org/platform/|Haskell Platform]] version 2012.2.0.0. Consequently, we used the Glasgow Haskell Compiler, GHC, with the following [[http://pleiad.dcc.uchile.cl/research/software/haskellaop/ghc-extensions|extensions]]. 
- 
-The code depends on the following packages: 
-  * random 
-  * mtl 
-  * HUnit 
-  * QuickCheck 
-  * containers 
-  * haskell-src-meta 
-  * template-haskell 
-  * polytypeable 
-  * ghc-prim 
- 
-Which can be installed using the [[http://www.haskell.org/haskellwiki/Cabal-Install | 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: 
- 
-  * deployment/undeployment: we define the AOPMonad class with the deploy/undeploy top-level operations. These functions use the underlying deployInEnv / undeployInEnv functions defined by type class MonadDeploy. 
- 
-  * In file Function.hs we define tagged functions to provide a more robust notion of function equality. Join points, open function application, and weaving are modified to accept this new kind of functions.