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
The revised report on the syntactic theories of sequential control and state
Theoretical Computer Science
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
Incremental programming with extensible decisions
AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
Design patterns for functional strategic programming
Proceedings of the 2002 ACM SIGPLAN workshop on Rule-based programming
Composable and compilable macros:: you want it when?
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Revised Report on the Algorithmic Language Scheme
Higher-Order and Symbolic Computation
Proceedings of the 2nd international conference on Aspect-oriented software development
Pointcuts and advice in higher-order languages
Proceedings of the 2nd international conference on Aspect-oriented software development
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
A Formal Definition of Crosscuts
REFLECTION '01 Proceedings of the Third International Conference on Metalevel Architectures and Separation of Crosscutting Concerns
What Is Aspect-Oriented Programming, Revisited
What Is Aspect-Oriented Programming, Revisited
Aspect-Oriented Programming is Quantification and Obliviousness
Aspect-Oriented Programming is Quantification and Obliviousness
Dynamically scoped functions as the essence of AOP
ACM SIGPLAN Notices
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
DrScheme: a programming environment for Scheme
Journal of Functional Programming
A semantics for advice and dynamic join points in aspect-oriented programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
A tail-recursive machine with stack inspection
ACM Transactions on Programming Languages and Systems (TOPLAS)
PolyAML: a polymorphic aspect-oriented functional programming language
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
A tail-recursive semantics for stack inspections
ESOP'03 Proceedings of the 12th European conference on Programming
A compilation and optimization model for aspect-oriented programs
CC'03 Proceedings of the 12th international conference on Compiler construction
Typing for a minimal aspect language: preliminary report
Proceedings of the 6th workshop on Foundations of aspect-oriented languages
Specializing continuations a model for dynamic join points
Proceedings of the 6th workshop on Foundations of aspect-oriented languages
Expressive scoping of dynamically-deployed aspects
Proceedings of the 7th international conference on Aspect-oriented software development
DLS '08 Proceedings of the 2008 symposium on Dynamic languages
Expressive scoping of distributed aspects
Proceedings of the 8th ACM international conference on Aspect-oriented software development
Transactions on Aspect-Oriented Software Development V
Beyond static and dynamic scope
DLS '09 Proceedings of the 5th symposium on Dynamic languages
AspectScript: expressive aspects for the web
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
Execution levels for aspect-oriented programming
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
EffectiveAdvice: disciplined advice with explicit effects
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
Composition of dynamic analysis aspects
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Scoping strategies for distributed aspects
Science of Computer Programming
Supporting dynamic, third-party code customizations in JavaScript using aspects
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Polymorphic bytecode instrumentation
Proceedings of the tenth international conference on Aspect-oriented software development
Proceedings of the eleventh workshop on Foundations of Aspect-Oriented Languages
A practical monadic aspect weaver
Proceedings of the eleventh workshop on Foundations of Aspect-Oriented Languages
Membranes for AOP: from vision to practice
Proceedings of the 11th annual international conference on Aspect-oriented Software Development Companion
PHANtom: an aspect language for pharo smalltalk
Proceedings of the 11th annual international conference on Aspect-oriented Software Development Companion
Secure and modular access control with aspects
Proceedings of the 12th annual international conference on Aspect-oriented software development
A typed monadic embedding of aspects
Proceedings of the 12th annual international conference on Aspect-oriented software development
Proceedings of the 4th international workshop on Variability & composition
Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools
Join point interfaces for safe and flexible decoupling of aspects
ACM Transactions on Software Engineering and Methodology (TOSEM)
Science of Computer Programming
Hi-index | 0.00 |
Aspect-oriented software design will need to support languages with first-class and higher-order procedures, such as Ruby, 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 provide an operational semantics, based on an extended CEKS machine, that gives a formal account of dynamic and static aspects. We implement the 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.