Hints represent a collection of ErrorItems to be included into ParseError (when it's a TrivialError) as “expected” message items when a parser fails without consuming input right after successful parser that produced the hints.
For example, without hints you could get:
parseTest (many (char 'r') <* eof) "ra"1:2:unexpected 'a'expecting end of input
We're getting better error messages with the help of hints:
parseTest (many (char 'r') <* eof) "ra"1:2:unexpected 'a'expecting 'r' or end of input