Strategic programming is an idiom for generic programming where the concept of a strategy plays a central role. A strategy is a generic, data-processing action. Strategies are first-class citizens as witnessed by a combinator style. Two important characteristics of strategies are that they can traverse into compound data, and that they can be customized by type-specific actions. We provide a general definition of strategic programming, and we demonstrate how this idiom can be realized inside several programming language paradigms. From: [[The Essence of Strategic Programming]] -- Main.EelcoVisser - 20 Jun 2002