Functional Programming and Program Transformation

This is the entry page to my small web around selected topics of functional programming, especially in Haskell, and program transformation.


HOPS - a term graph programming and program transformation system
HOPS allows interactive creation and manipulation of programs in their term graph structure. Program transformation is supported by application of user-defined second-order term graph rewriting rules. Rule application and the strong typing support are always available during editing, and HOPS modules are literate programs.
Haskell Animation
In this project I strive to make the graphical and interactive capabilities of HOPS available to animation and debugging of Haskell programs. Its central component is a special-purpose ``middle end'' to the Glasgow Haskell Compiler GHC, allowing to produce HOPS modules. In the long run, this should also open up the possibility to use HOPS to transform Haskell programs. Two example animations can be found in a derivation of efficient variants of lines.
Editor Combinators
Just as parser combinators replace parser generator tools, it will become possible to replace tools for generating structure editors with editor combinators.
Galley Concepts in Document Formatting Combinators
Galleys are the central concept of the document formatting system Lout developed by Jeff Kingston, and allow high-level programming of document styles. I have started to explore a purely functional formulation of galley behaviour, which might, in the future, lead to an even nicer successor system to Lout. An especially attractive aspect is that galleys might be a good way to formalise the ``formatting objects'' of XSL.

Wolfram Kahl