AspectML: A polymorphic aspect-oriented functional programming language

被引:15
|
作者
Dantas, Daniel S. [1 ]
Walker, David [1 ]
Washburn, Geoffrey [2 ]
Weirich, Stephanie [2 ]
机构
[1] Princeton Univ, Princeton, NJ 08544 USA
[2] Univ Penn, Philadelphia, PA 19104 USA
来源
ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS | 2008年 / 30卷 / 03期
关键词
design; languages; security; theory;
D O I
10.1145/1353445.1353448
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
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.
引用
收藏
页数:60
相关论文
共 50 条
  • [1] Language-independent aspect-oriented programming
    Lafferty, D
    Cahill, V
    ACM SIGPLAN NOTICES, 2003, 38 (11) : 1 - 12
  • [2] An Aspect-Oriented Approach to the Undergraduate Programming Language Curriculum
    Sheldon, Mark A.
    Turbak, Franklyn
    ACM SIGPLAN NOTICES, 2008, 43 (11) : 124 - 129
  • [3] Cooperative aspect-oriented programming
    Hoffman, Kevin
    Eugster, Patrick
    SCIENCE OF COMPUTER PROGRAMMING, 2009, 74 (5-6) : 333 - 354
  • [4] A semantics for advice and dynamic join points in aspect-oriented programming
    Wand, M
    Kiczales, G
    Dutchyn, C
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2004, 26 (05): : 890 - 910
  • [5] The paradoxical success of aspect-oriented programming
    Steimann, Friedrich
    ACM SIGPLAN NOTICES, 2006, 41 (10) : 481 - 497
  • [6] Security through aspect-oriented programming
    De Win, B
    Vanhaute, B
    De Decker, B
    ADVANCES IN NETWORK AND DISTRIBUTED SYSTEMS SECURITY, 2001, 78 : 125 - 138
  • [7] Trading Obliviousness for Modularity with Cooperative Aspect-Oriented Programming
    Hoffman, Kevin
    Eugster, Patrick
    ACM TRANSACTIONS ON SOFTWARE ENGINEERING AND METHODOLOGY, 2013, 22 (03) : 1 - 46
  • [8] Weave Droid: Aspect-Oriented Programming on Android Devices
    Falcone, Ylies
    Currea, Sebastian
    2012 PROCEEDINGS OF THE 27TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING (ASE), 2012, : 350 - 353
  • [9] Footprint and feature management using aspect-oriented programming techniques
    Hunleth, F
    Cytron, RK
    ACM SIGPLAN NOTICES, 2002, 37 (07) : 38 - 45
  • [10] Systems Evolution and Software Reuse in Object-Oriented Programming and Aspect-Oriented Programming
    Przybylek, Adam
    OBJECTS, MODELS, COMPONENTS, PATTERNS, TOOLS 2011, 2011, 6705 : 163 - 178