TY - GEN
T1 - PolyAML
T2 - 10th ACM SIGPLAN International Conference on Functional Programming, ICFP 2005
AU - Dantas, Daniel S.
AU - Walker, David
AU - Washburn, Geoffrey
AU - Weirich, Stephanie
PY - 2005
Y1 - 2005
N2 - This paper defines PolyAML, a typed functional, aspect-oriented programming language. The main contribution of PolyAML is the seamless integration of polymorphism, run-time type analysis and aspect-oriented programming language features. In particular, PolyAML allows programmers to define type-safe polymorphic advice using pointcuts constructed from a collection of polymorphic join points. PolyAML 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. These labels are organized in a tree structure such that a parent in the tree serves as a representative for all of its children. Type safety requires that the type of each child is less polymorphic than its parent type. Similarly, when a set of labels is assembled as a pointcut, the type of each label is an instance of the type of the pointcut.
AB - This paper defines PolyAML, a typed functional, aspect-oriented programming language. The main contribution of PolyAML is the seamless integration of polymorphism, run-time type analysis and aspect-oriented programming language features. In particular, PolyAML allows programmers to define type-safe polymorphic advice using pointcuts constructed from a collection of polymorphic join points. PolyAML 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. These labels are organized in a tree structure such that a parent in the tree serves as a representative for all of its children. Type safety requires that the type of each child is less polymorphic than its parent type. Similarly, when a set of labels is assembled as a pointcut, the type of each label is an instance of the type of the pointcut.
KW - Ad-hoc polymorphism
KW - Aspects-oriented programming
KW - Functional programming
KW - Type inference
KW - Type systems
UR - http://www.scopus.com/inward/record.url?scp=84876747584&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84876747584&partnerID=8YFLogxK
U2 - 10.1145/1086365.1086404
DO - 10.1145/1086365.1086404
M3 - Conference contribution
AN - SCOPUS:84876747584
SN - 1595930647
SN - 9781595930644
T3 - Proceedings of the ACM SIGPLAN International Conference on Functional Programming, ICFP
SP - 306
EP - 319
BT - ICFP 2005 - Proceedings of the 10th ACM SIGPLAN International Conference on Functional Programming
Y2 - 26 September 2005 through 28 September 2005
ER -