We define a challenging and meaningful benchmark for genericity in language processing, namely the notion of  generic program refactoring . We provide the first implementation of the benchmark based on  functional strategic programming  in Haskell. We use the basic refactoring of  abstraction extraction  as the running example. Our implementation comes as a  functional programming framework  with hot spots for the language-specific ingredients for refactoring, e.g., means for abstraction construction and destruction, and recognisers for name analysis. The language-parametric framework can be instantiated for various, rather different languages, e.g., Java, Prolog, Haskell, or XML schema.
['Ralf Lämmel']
Towards generic refactoring