This library provides a quick-and-dirty (but often effective)
method for extending Haskell's syntax using a custom
preprocessor. It parses Haskell into a bare-bones AST with just
enough knowledge of the syntax to preserve nesting, and then
allows transformations on the AST.
See the package ixdopp
for an example of how to do this.