Generic programming . Many programs work in essentially the same way, but operate on different datatypes. The unification of such programs into single programs that are parametric in the underlying datatype has lead to the development of a new research area, called generic programming. At the moment, my main interest in this area is in the study of generic operators and proof methods for recursive programming. Recursion operators .
Many recursive programs use a common pattern of recursion.
Abstracting these patterns into general schemes leads to a more structured approach to recursive programming and proof, and has proved important in the initial development of generic programming. I'm particularly interested in the recursion operators fold and unfold, which capture common patterns for consuming and producing structured data. Coalgebraic methods . The use of algebraic methods has a long history in computing, and is closely linked with the denotational approach to semantics. In recent years, it has become increasingly clear that the dual notion of coalgebraic methods are just as central in computing, motivated by the fact that the operational approach to semantics has a natural coalgebraic foundation.