Documentation

The fine distinction between different kinds of parse errors allows
the system to generate quite good error messages for the user. It
also allows error messages that are formatted in different
languages. Each kind of message is generated by different combinators:

A SysUnExpect message is automatically generated by the
satisfy combinator. The argument is the
unexpected input.

A UnExpect message is generated by the unexpected
combinator. The argument describes the
unexpected item.

A Expect message is generated by the <?>
combinator. The argument describes the expected item.

A Message message is generated by the fail
combinator. The argument is some general parser message.

The abstract data type ParseError represents parse errors. It
provides the source position (SourcePos) of the error
and a list of error messages (Message). A ParseError
can be returned by the function parse. ParseError is an
instance of the Show class.