use literate Haskell

When there's more comments than code it makes sense to use literal Haskell instead.  The source file is preprocessed by the `unlit` script which simply converts all text to comments and all lines prefixed with `>` to code.