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.

WWW: http://www.eecs.harvard.edu/~tov/pubs/haskell-session-types/