Aspectual Caml: an aspect-oriented functional language

We propose an aspect-oriented programming (AOP) language called Aspectual Caml based on a strongly-typed functional language Objective Caml with two AOP mechanisms similar to those in AspectJ language. This paper describes the design and implementation issues of those AOP mechanisms that give us insights into the interaction between AOP features and common features in strongly-typed functional languages such as type inference, polymorphic types and curried functions. We implemented a prototype compiler of the language and used the language for separating crosscutting concerns in application programs, including for separating descriptions of a type system from compiler descriptions.

[1]  Jacques Garrigue,et al.  Code reuse through polymorphic variants , 2000 .

[2]  Ondrej Lhoták,et al.  Optimising aspectJ , 2005, PLDI '05.

[3]  Hidehiko Masuhara,et al.  A Compilation and Optimization Model for Aspect-Oriented Programs , 2003, CC.

[4]  Jonathan Aldrich,et al.  Open Modules: Modular Reasoning About Advice , 2005, ECOOP.

[5]  Robert E. Filman,et al.  What Is Aspect-Oriented Programming , 2001 .

[6]  David Walker,et al.  PolyAML: a polymorphic aspect-oriented functional programming language , 2005, ICFP '05.

[7]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[8]  Martin Erwig,et al.  Type-safe update programming , 2003 .

[9]  Vittorio Ferretti α, β, γ,… , 2004 .

[10]  Oege de Moor,et al.  Static analysis of aspects , 2003, AOSD '03.

[11]  Tzilla Elrad,et al.  Aspect-oriented programming: Introduction , 2001, CACM.

[12]  Xavier Leroy A proposal for recursive modules in Objective Caml , 2003 .

[13]  Gregor Kiczales,et al.  Structuring operating system aspects: using AOP to improve OS structure modularity , 2001, CACM.

[14]  Philip Wadler Functional Programming: An Angry Half-Dozen , 1997, DBPL.

[15]  Hidehiko Masuhara,et al.  Modeling Crosscutting in Aspect-Oriented Mechanisms , 2003, ECOOP.

[16]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[17]  William G. Griswold,et al.  Getting started with ASPECTJ , 2001, CACM.

[18]  Andrew Clement,et al.  Large-scale AOSD for middleware , 2004, AOSD '04.

[19]  Gregor Kiczales,et al.  Apostle : A Simple Incremental Weaver for a Dynamic Aspect Language TR-2003-16 , 2003 .

[20]  David Walker,et al.  A theory of aspects , 2003, ICFP '03.

[21]  Sriram K. Rajamani,et al.  The SLAM project: debugging system software via static analysis , 2002, POPL '02.

[22]  Gregor Kiczales,et al.  Using aspectC to improve the modularity of path-specific customization in operating system code , 2001, ESEC/FSE-9.

[23]  Jim Hugunin,et al.  Advice weaving in AspectJ , 2004, AOSD '04.

[24]  Shriram Krishnamurthi,et al.  Pointcuts and advice in higher-order languages , 2003, AOSD '03.

[25]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[26]  Gregor Kiczales,et al.  A semantics for advice and dynamic join points in aspect-oriented programming , 2001, TOPL.

[27]  John Hughes,et al.  Why Functional Programming Matters , 1989, Comput. J..

[28]  Robert Hirschfeld AspectS - AOP with Squeak , 2001 .

[29]  Wolfgang Schröder-Preikschat,et al.  AspectC++: an aspect-oriented extension to the C++ programming language , 2002 .

[30]  Jonas Bonér,et al.  What are the key issues for commercial AOP use: how does AspectWerkz address them? , 2004, AOSD '04.