Affiliation:
1. Princeton University, Princeton, NJ
2. University of Pennsylvania, Philadelphia, PA
Abstract
This article defines AspectML, a typed functional, aspect-oriented programming language. The main contribution of AspectML is the seamless integration of polymorphism, run-time type analysis and aspect-oriented programming language features. In particular, AspectML allows programmers to define type-safe polymorphic advice using pointcuts constructed from a collection of polymorphic join points. AspectML also comes equipped with a type inference algorithm that conservatively extends Hindley--Milner type inference. To support first-class polymorphic point-cut designators, a crucial feature for developing aspect-oriented profiling or logging libraries, the algorithm blends the conventional Hindley--Milner type inference algorithm with a simple form of local type inference.
We give our language operational meaning via a type-directed translation into an expressive type-safe intermediate language. Many complexities of the source language are eliminated in this translation, leading to a modular specification of its semantics. One of the novelties of the intermediate language is the definition of polymorphic labels for marking control-flow points. When a set of labels is assembled as a pointcut, the type of each label is an instance of the type of the pointcut.
Funder
National Science Foundation
ARDA
Publisher
Association for Computing Machinery (ACM)
Reference57 articles.
1. Open Modules: Modular Reasoning About Advice
2. Semantics of static pointcuts in aspectJ
3. Barendregt H. 1985. The Lambda Calculus: Its Syntax and Semantics. Number 103 in Studies in Logic. North Holland. Barendregt H. 1985. The Lambda Calculus: Its Syntax and Semantics. Number 103 in Studies in Logic. North Holland.
Cited by
16 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献