In this field, the aim is to develop effective techniques for constructing programs that are guaranteed to be correct, either by explicit proof, or preferably, by calculating programs directly from their specifications. Broadly speaking, functional programming is a style of programming that emphasizes the evaluation of expressions rather than the execution of commands. My interests in functional programming are mainly concerned with the transformation, construction, and proof of programs. 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.