by Hideaki Tatsuzawa,
Hidehiko Masuhara and Akinori Yonezawa
Abstract:
We propose an aspect-oriented programming (AOP) language called Aspectual Caml based on a strongly-typed functional language Objective Caml. Aspectual Caml offers two AOP mechanisms, namely the pointcut and advice mechanism and the type extension mechanism, which gives similar functionality to the inter-type declarations in AspectJ. Those mechanisms are not simple adaptation of the similar mechanisms in existing AOP languages, but re-designed for common programming styles in 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 separating a type system from a compiler of a simple language.
Reference:
Aspectual Caml: an Aspect-Oriented Functional Language (Hideaki Tatsuzawa, Hidehiko Masuhara and Akinori Yonezawa), In Proceedings of Foundations of Aspect-Oriented Langauges (FOAL2005) (Curtis Clifton, Ralf Lämmel, Gary T. Leavens, eds.), 2005. (An extended version appears as [masuhara2005icfp].)
Bibtex Entry:
@inproceedings{tatsuzawa2005foal,
editor = {Curtis Clifton and Ralf L\"ammel and Gary T. Leavens},
month = mar,
year = 2005,
url = {https://lib.dr.iastate.edu/cgi/viewcontent.cgi?article=1266&context=cs_techreports},
booktitle = {Proceedings of Foundations of Aspect-Oriented Langauges (FOAL2005)},
author = {Hideaki Tatsuzawa and Hidehiko Masuhara and Akinori Yonezawa},
title = {{A}spectual {C}aml: an Aspect-Oriented Functional Language},
pdf = {foal2005.pdf},
note = {An extended version appears as \cite{masuhara2005icfp}.},
pages = {39--50},
keywords = {OCaml},
abstract = {We propose an aspect-oriented programming (AOP) language called Aspectual Caml based on a strongly-typed functional language Objective Caml. Aspectual Caml offers two AOP mechanisms, namely the pointcut and advice mechanism and the type extension mechanism, which gives similar functionality to the inter-type declarations in AspectJ. Those mechanisms are not simple adaptation of the similar mechanisms in existing AOP languages, but re-designed for common programming styles in 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 separating a type system from a compiler of a simple language.}
}