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/