Strategic programming is a generic programming idiom for processing compound data such as terms or object structures. At the heart of the approach is the separation of two concerns: basic data-processing computations vs. traversal schemes. Actual traversals can be composed by passing the former as arguments to the latter. Traversal schemes can be defined by the strategic programmer using a combinator style that relies on primitives for layered traversal. In this paper, we adopt an aspect-oriented view on strategic programming. This necessitates the instantiation of aspect-oriented terms such as crosscutting, join point, and advice. More specifically, we compare strategic programming with adaptive programming, which is a well-established aspectual approach to the traversal of object structures.

Software Engineering [SEN]
Software Analysis and Transformation

Lämmel, R, Visser, E, & Visser, J.M.W. (2003). Strategic programming meets adaptive programming. Software Engineering [SEN]. CWI.