
5 Apr
2012
5 Apr
'12
2:25 a.m.
There is working code to accompany the book on Graham Hutton's website
that wraps Parser as a newtype.
http://www.cs.nott.ac.uk/~gmh/book.html
http://www.cs.nott.ac.uk/~gmh/Parsing.lhs
Graham makes a brief comment about the difference at the end of the
parsing chapter.
On 4 April 2012 18:31, Brent Yorgey
In order to use do-notation, Parser has to be an instance of Monad. However, ((->) String) is already an instance of Monad, and it's not the instance you want for Parser. There cannot be two instances for the same type, so you must wrap it in a newtype in order to make a different instance.