Dynamically scoped functions as the essence of AOP

The aspect-oriented programming community devotes lots of energy into the provision of complex static language constructs to reason about eventual dynamic properties of a program. Only the focus on a strongly dynamically-natured language construct reveals a very simple mechanism behind the notions of AOP. This paper shows that dynamically scoped functions, together with a simple additive to access previous function definitions, form the essence of aspect-oriented programming. We present a complete executable one page implementation of this idea.

[1]  James Gosling The Java Language Specification - Second Edition , 2000 .

[2]  John Launchbury,et al.  Implicit parameters: dynamic scoping with static types , 2000, POPL '00.

[3]  Jr. Guy L. Steele,et al.  Common LISP: the language (2nd ed.) , 1990 .

[4]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[5]  Wilson C. Hsieh,et al.  Runtime aspect weaving through metaprogramming , 2002, AOSD '02.

[6]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[7]  David R. Hanson,et al.  Dynamic variables , 2001, PLDI '01.

[8]  Rainer Unland,et al.  Objects, Components, Architectures, Services, and Applications for a Networked World , 2003, Lecture Notes in Computer Science.

[9]  Guy L. Steele,et al.  The evolution of Lisp , 1993, HOPL-II.

[10]  Matthew Flatt,et al.  PLT MzScheme: Language Manual , 2000 .

[11]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[12]  Gerald Jay Sussman,et al.  The Art of the Interpreter or, The Modularity Complex (Parts Zero, One, and Two) , 1978 .

[13]  R. Kent Dybvig,et al.  Revised5 Report on the Algorithmic Language Scheme , 1986, SIGP.

[14]  Daniel P. Friedman,et al.  Aspect-Oriented Programming is Quantification and Obliviousness , 2000 .

[15]  Ralf Lämmel,et al.  A semantical approach to method-call interception , 2002, AOSD '02.

[16]  Gerald Jay Sussman,et al.  Lambda: The Ultimate Imperative , 1976 .

[17]  Ralf Lämmel Adding superimposition to a language semantics , 2003 .

[18]  Thomas J. Bergin,et al.  History of programming languages---II , 1996 .

[19]  Wolfgang De Meuter Monads as a theoretical foundation for AOP , 2000 .

[20]  Gerald Jay Sussman,et al.  The Revised Report on SCHEME: A Dialect of LISP. , 1978 .

[21]  Robert Hirschfeld,et al.  AspectS - Aspect-Oriented Programming with Squeak , 2002, NetObjectDays.

[22]  Guy L. Steele,et al.  Common LISP: the language, 2nd Edition , 1990 .

[23]  Guy L. Steele,et al.  Java Language Specification, Second Edition: The Java Series , 2000 .

[24]  Jonathan Rees,et al.  Revised3 report on the algorithmic language scheme , 1986, SIGP.

[25]  Robert E. Filman What Is Aspect-Oriented Programming, Revisited , 2001 .

[26]  Shriram Krishnamurthi,et al.  Pointcuts and advice in higher-order languages , 2003, AOSD '03.

[27]  Harold Ossher,et al.  Workshop on advanced separation of concerns in software engineering , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.