Syntactic extensions in the programming language LISP
Syntactic extensions in the programming language LISP
Macro-by-example: Deriving syntactic transformations from their specifications
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Syntactic abstraction in Scheme
Lisp and Symbolic Computation
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Aspect-oriented programming with adaptive methods
Communications of the ACM
Composing crosscutting concerns using composition filters
Communications of the ACM
Handling crosscutting constraints in domain-specific modeling
Communications of the ACM
Aspect-oriented programming using reflection and metaobject protocols
Communications of the ACM
Software product lines: practices and patterns
Software product lines: practices and patterns
Composable and compilable macros:: you want it when?
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
ESOP '01 Proceedings of the 10th European Symposium on Programming Languages and Systems
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
DrScheme: a programming environment for Scheme
Journal of Functional Programming
Dynamically scoped functions as the essence of AOP
ACM SIGPLAN Notices
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Hybrid aspects for weaving object-oriented functionality and rule-based knowledge
Proceedings of the 3rd international conference on Aspect-oriented software development
Composition, reuse and interaction analysis of stateful aspects
Proceedings of the 3rd international conference on Aspect-oriented software development
A semantics for advice and dynamic join points in aspect-oriented programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
Composing security policies with polymer
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
PolyAML: a polymorphic aspect-oriented functional programming language
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Aspectual Caml: an aspect-oriented functional language
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
A parameterized interpreter for modeling different AOP mechanisms
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type-directed weaving of aspects for higher-order functional languages
Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Semantics of static pointcuts in aspectJ
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 6th international conference on Aspect-oriented software development
SCoPE: an AspectJ compiler for supporting user-defined analysis-based pointcuts
Proceedings of the 6th international conference on Aspect-oriented software development
Semantics and scoping of aspects in higher-order languages
Science of Computer Programming - Special issue: Foundations of aspect-oriented programming
A type-theoretic interpretation of pointcuts and advice
Science of Computer Programming - Special issue: Foundations of aspect-oriented programming
Typed parametric polymorphism for aspects
Science of Computer Programming - Special issue: Foundations of aspect-oriented programming
Aspect-oriented programming with type classes
Proceedings of the 6th workshop on Foundations of aspect-oriented languages
AspectML: A polymorphic aspect-oriented functional programming language
ACM Transactions on Programming Languages and Systems (TOPLAS)
Program refactoring using functional aspects
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
A decision tree-based approach to dynamic pointcut evaluation
Proceedings of the 2nd Workshop on Virtual Machines and Intermediate Languages for emerging modularization mechanisms
Composing expressive runtime security policies
ACM Transactions on Software Engineering and Methodology (TOSEM)
Unifying aspect- and object-oriented design
ACM Transactions on Software Engineering and Methodology (TOSEM)
Feature (De)composition in Functional Programming
SC '09 Proceedings of the 8th International Conference on Software Composition
Modularizing crosscuts in an e-commerce application in Lisp using HALO
Proceedings of the 2007 International Lisp Conference
AspectScript: expressive aspects for the web
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
An algebraic foundation for automatic feature-based program synthesis
Science of Computer Programming
Constraining delimited control with contracts
ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
Hi-index | 0.00 |
Aspect-oriented software design will need to support languages with first-class and higher-order procedures, such as Python, Perl, ML and Scheme. These language features present both challenges and benefits for aspects. On the one hand, they force the designer to carefully address issues of scope that do not arise in first-order languages. On the other hand, these distinctions of scope make it possible to define a much richer variety of policies than first-order aspect languages permit.In this paper, we describe the subtleties of pointcuts and advice for higher-order languages, particularly Scheme. We then resolve these subtleties by alluding to traditional notions of scope. In particular, programmers can now define both dynamic aspects traditional to AOP and static aspects that can capture common security-control paradigms. We also describe the implementation of this language as an extension to Scheme. By exploiting two novel features of our Scheme system---continuation marks and language-defining macros---the implementation is lightweight and integrates well into the programmer's toolkit.