A C preprocessor in Haskell