[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Aspect Oriented Programming in context of lightweight languages.
There a few "threads" of AOP research in FP languages, that I am aware of:
- At Northeastern, Doug Orleans is doing work in this area, for example in
"Incremental Programming with Extensible Decisions"
- Somewhat related to this, Mitchell Wand and Gregor Kiczales have
written a paper "A Semantics for Advice and Dynamic Join Points in
- And there is a new paper for this week's AOSD conference, by Shriram
Krishnamurthi and David Tucker, "Pointcuts and Advice in Higher-Order
Languages" [Alas, this one is not online yet.]
Two, somewhat different "kinds of AOP":
- "Aspect Weaving as Component Knitting: Separating Concerns with Knit" by
the "Knit" team at Utah (Matthew Flatt and others):
This paper descibes using "units" (as in the "unit" mechanism of PLT
in a C-extension to do a sort of "AOP" to provide "cross-cutting" features
in an OS kernel.
- Simon Peyton Jones, et al. wrote a paper on "Aspect-oriented Compilers",
describing another style of AOP--this time in Haskell:
Personally, I have used a technique like that in the Flatt, et al. paper
to extend an existing Scheme-based XML parser--SSAX--to support a
different "cross cutting concern": recording source location information,
for all the different parsed XML terms. This was done with units in
In a message dated 3/18/03 11:17:16 PM, email@example.com writes:
> I've been reading on Aspect Oriented Programming for a while, and I was
>having a hard time getting my head around it. On the surface, it seems
>useful to me, but it seems everyone loves the "adding logging to an
>application example", and other problems solved by it aren't just busting
>out of my head.
> In a Lightweight/Little Languages context, I was curious both for examples
>of (specific) problems it solves, and whether it applies to something
>besides a mostly procedural/OO language like Java. For instance, how does
>AOP relate to Lisp? Does Lisp already do it? How?