I use the lazy functional language Haskell in most of my research. Generic programming . Many programs work in essentially the same way, but operate on different datatypes. 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.