|
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.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Abadi, M. and Fournet, C. 2003. Access control based on execution history. In Proceedings of the 10th Symposium on Network and Distributed System Security (San Diego, CA). Internet Society, Reston, VA, 107--121.
|
| |
2
|
Alfred V. Aho , Ravi Sethi , Jeffrey D. Ullman, Compilers: principles, techniques, and tools, Addison-Wesley Longman Publishing Co., Inc., Boston, MA, 1986
|
| |
3
|
Aldrich, J. 2005. Open modules: Modular reasoning about advice. In Proceedings of the 19th European Conference on Object-Oriented Programming (Glasgow, UK). 144--168.
|
 |
4
|
Pavel Avgustinov , Elnar Hajiyev , Neil Ongkingco , Oege de Moor , Damien Sereni , Julian Tibble , Mathieu Verbaere, Semantics of static pointcuts in aspectJ, Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, January 17-19, 2007, Nice, France
|
| |
5
|
Barendregt, H. 1985. The Lambda Calculus: Its Syntax and Semantics. Number 103 in Studies in Logic. North Holland.
|
 |
6
|
|
| |
7
|
Bruns, G., Jagadeesan, R., Jeffrey, A., and Riely, J. 2004. muABC: A minimal aspect calculus. In Proceedings of the 15th International Conference on Concurrency Theory (London, UK), P. Gardner and N. Yoshida, Eds. Lecture Notes in Computer Science, vol. 3170. Springer, Berlin, Germany, 209--224.
|
| |
8
|
Clifton, C. and Leavens, G. T. 2002. Observers and assistants: A proposal for modular aspect-oriented reasoning. In Proceedings of the 2002 Workshop on Foundations of Aspect-Oriented Languages (Enschede, The Netherlands). 33--44.
|
 |
9
|
|
 |
10
|
|
 |
11
|
|
| |
12
|
Dantas, D. S. and Walker, D. 2003. Aspects, information hiding and modularity. Tech. Rep. TR-696-04, Princeton University. Nov.
|
 |
13
|
|
 |
14
|
|
| |
15
|
Dantas, D. S., Walker, D., Washburn, G., and Weirich, S. 2005b. PolyAML: A polymorphic aspect-oriented functional programmming language (extended version). Tech. Rep. MS-CIS-05-07, University of Pennsylvania. May.
|
 |
16
|
Rémi Douence , Pascal Fradet , Mario Südholt, Composition, reuse and interaction analysis of stateful aspects, Proceedings of the 3rd international conference on Aspect-oriented software development, p.141-150, March 22-24, 2004, Lancaster, UK
[doi> 10.1145/976270.976288]
|
| |
17
|
|
 |
18
|
|
| |
19
|
|
| |
20
|
Evans, D. and Twyman, A. 1999. Flexible policy-directed code safety. In Proceedings of the 1999 IEEE Symposium on Security and Privacy (Oakland, CA). IEEE Computer Society, Washington, DC, 32--45.
|
| |
21
|
Filman, R. E. and Friedman, D. P. 2005. Aspect-Oriented Software Development. Addison-Wesley, Boston, MA, Chapter Aspect-Oriented Programming is Quantification and Obliviousness, 21--35.
|
| |
22
|
Marc E. Fiuczynski , Robert Grimm , Yvonne Coady , David Walker, patch (1) considered harmful, Proceedings of the 10th conference on Hot Topics in Operating Systems, p.16-16, June 12-15, 2005, Santa Fe, NM
|
 |
23
|
|
| |
24
|
|
| |
25
|
Harper, R. W. 2005. Programming Languages: Theory and Practice. In preparation, a draft can be obtained from http://www.cs.cmu.edu/_rwh/plbook/.
|
| |
26
|
Hinze, R., Löh, A., and Oliveira, B. C. 2006. “Scrap your boilerplate” reloaded. In Proceedings of the 8th International Symposium on Functional and Logic Programming (Fuji Susono, Japan), P. Waldler and M. Hagiya, Eds. 24--26.
|
| |
27
|
Jagadeesan, R., Jeffrey, A., and Riely, J. 2003. A calculus of untyped aspect-oriented programs. In Proceedings of the 17th European Conference on Object-Oriented Programming (Darmstadt, Germany). Springer-Verlag, Berlin, Germany, 415--427.
|
| |
28
|
|
| |
29
|
Gregor Kiczales , Erik Hilsdale , Jim Hugunin , Mik Kersten , Jeffrey Palm , William G. Griswold, An Overview of AspectJ, Proceedings of the 15th European Conference on Object-Oriented Programming, p.327-353, June 18-22, 2001
|
| |
30
|
Kim, M., Viswanathan, M., Ben-Abdallah, H., Kannan, S., Lee, I., and Sokolsky, O. 1999. Formally specified monitoring of temporal properties. In Proceedings of the 11th Euromicro Conference on Real-Time Systems (York, UK). 114--121.
|
| |
31
|
Lufer, K. and Odersky, M. 1992. An extension of ML with first-class abstract types. In Proceedings of the SIGPLAN Workshop on ML and its Applications (San Fransisco, California). 78--91.
|
 |
32
|
|
| |
33
|
Lee, I., Kannan, S., Kim, M., Sokolsky, O., and Viswanathan, M. 1999. Run-time assurance based on formal specifications. In Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications (Las Vegas, NV).
|
| |
34
|
Lieberherr, K. J., Lorenz, D., and Ovlinger, J. 2003. Aspectual collaborations—combining modules and aspects. The Computer Journal 46, 5 (Sept.), 542--565.
|
| |
35
|
Masuhara, H., Kiczales, G., and Dutchyn, C. 2002. Compilation semantics of aspect-oriented programs. In Proceedings of the Workshop on Foundations of Aspect-Oriented Languages (Lancaster, UK), G. T. Leavens and R. Cytron, Eds. 17--25.
|
 |
36
|
|
| |
37
|
Matthews, D. 2005. Poly/ML. http://www.polyml.org/.
|
| |
38
|
Milner, R. 1978. A theory of type polymorphism in programming. J. Comput. Syst. Sci. 17, 3, 348--375.
|
| |
39
|
|
 |
40
|
Simon Peyton Jones , Dimitrios Vytiniotis , Stephanie Weirich , Geoffrey Washburn, Simple unification-based type inference for GADTs, Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming, September 16-21, 2006, Portland, Oregon, USA
|
| |
41
|
|
 |
42
|
|
| |
43
|
Plotkin, G. D. 1970. A note on inductive generalization. In Machine Intelligence. Vol. 5. Edinburgh University Press, 153--163.
|
| |
44
|
Plotkin, G. D. 1971. A further note on inductive generalization. In Machine Intelligence. Vol. 6. Edinburgh University Press, 101--124.
|
 |
45
|
|
 |
46
|
|
 |
47
|
|
| |
48
|
Shields, M. and Peyton Jones, S. 2002. Lexically scoped type variables. Microsoft Research. Available at http://research.microsoft.com/Users/simonpj/papers/scoped-tyvars.
|
| |
49
|
Simonet, V. and Pottier, F. 2005. Constraint-based type inference for guarded algebraic data types. Tech. Rep. Research Report 5462, INRIA. Jan.
|
 |
50
|
Kevin Sullivan , William G. Griswold , Yuanyuan Song , Yuanfang Cai , Macneil Shonle , Nishit Tewari , Hridesh Rajan, Information hiding interfaces for aspect-oriented design, Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering, September 05-09, 2005, Lisbon, Portugal
|
| |
51
|
Sulzmann, M., Schrijvers, T., and Stuckey, P. J. 2006. Type inference for GADTS via herbrand constraint abduction. http//www.comp.nus.edu.sg/~sulzmann/manuscript/gadtshort.ps.
|
 |
52
|
|
 |
53
|
|
 |
54
|
|
 |
55
|
|
| |
56
|
Wang, M., Chen, K., and Khoo, S.-C. 2006. On the pursuit of staticness and coherence. In Proceedings of the 5th Workshop on Foundations of Aspect-Oriented Languages (Bonn, Germany).
|
| |
57
|
|
|