
Am 28.01.2011 17:52, schrieb Edward Kmett:
While you're hacking around on parsec a nice improvement would be to relax the type on the language generators in Text.ParserCombinators.Parsec.Language. (This one could be done without so drastic a change as bumping from 3 to 4):
In parsec3 this would be Text.Parsec.Language. (Text.ParserCombinators.* is removed in parsec3.) Furthermore, I'm no friend of the Parsec.{Token,Language} modules, therefore I've removed them in parsec1. I would rather see separate helper functions for lexing and comment skipping than having them bundled as TokenParser or LanguageDef. C.
They can all be instantiated for Monad m => GenLanguageDef String s m instead of LanguageDef, this would greatly extend their usability.
You could even go a little farther and relax them so they can work over Bytestrings, etc.
I for one always feel a little twinge when I'm forced to copy and paste them and change the signature just because I'm working in a parser that provides state, uses _any_ base monad, or consumes some other Char source.
-Edward Kmett