Taming aspects with monads and membranes

Ismael Figueroa 1 Nicolas Tabareau 2, 3 Éric Tanter 1
2 ASCOLA - Aspect and composition languages
LINA - Laboratoire d'Informatique de Nantes Atlantique, Département informatique - EMN, Inria Rennes – Bretagne Atlantique
Abstract : When a software system is developed using several aspects, special care must be taken to ensure that the resulting behavior is correct. This is known as the aspect interference problem, and existing approaches essentially aim to detect whether a system exhibits problematic interferences of aspects. In this paper we describe how to control aspect interference by construction by relying on the type system. More precisely, we combine a monadic embedding of the pointcut/advice model in Haskell with the notion of membranes for aspect-oriented programming. Aspects must explicitly declare the side effectsa nd the context they can act upon. Allowed patterns of control flow interference are declared at the membrane level and statically enforced. Finally, computational interference between aspects is controlled by the membrane topology. To combine independent and reusable aspects and monadic components into a program specification we use monad views, a recent technique for conveniently handling the monadic stack.
Type de document :
Communication dans un congrès
FOAL'13: Foundations of aspect-oriented languages, Mar 2013, Fukuoka, Japan. ACM, 2013, 〈10.1145/2451598.2451600〉
Liste complète des métadonnées

Littérature citée [15 références]  Voir  Masquer  Télécharger

Contributeur : Nicolas Tabareau <>
Soumis le : lundi 8 avril 2013 - 12:31:47
Dernière modification le : mercredi 11 avril 2018 - 02:01:28
Document(s) archivé(s) le : lundi 3 avril 2017 - 01:45:29


Fichiers produits par l'(les) auteur(s)



Ismael Figueroa, Nicolas Tabareau, Éric Tanter. Taming aspects with monads and membranes. FOAL'13: Foundations of aspect-oriented languages, Mar 2013, Fukuoka, Japan. ACM, 2013, 〈10.1145/2451598.2451600〉. 〈hal-00808983〉



Consultations de la notice


Téléchargements de fichiers