Parsec is designed from scratch as an industrial-strength parser
library. It is simple, safe, well documented (on the package
homepage), has extensive libraries and good error messages,
and is also fast. It is defined as a monad transformer that can be
stacked on arbitrary monads, and it is also parametric in the
input stream type.