Again stealing ideas from Parsec, I have given 'Dao.NewParser.GenParserState' a user-definable state, which changes the type signature of everything related to 'Dao.NewParser.GenParser's, and also 'Dao.NewParser.GenLexer's because lexers can throw 'Dao.NewParser.GenParserErr's which now have a user-defined state reference (because it might be handy to see the state when a parser fails). However 'Dao.NewParser.GenLexer's do not actually use the user-definable state, when lexing the state is always the null value "()". Also, BUG FIX: I discovered that the monadic "fail" function would backtrack if it were evaluated at the end of token stream because it made use of 'Dao.NewParser.getCursor' which required there be at least one token to succeed. This has been fixed now.
Again stealing ideas from Parsec, I have given 'Dao.NewParser.GenParserState' a user-definable state, which changes the type signature of everything related to 'Dao.NewParser.GenParser's, and also 'Dao.NewParser.GenLexer's because lexers can throw 'Dao.NewParser.GenParserErr's which now have a user-defined state reference (because it might be handy to see the state when a parser fails). However 'Dao.NewParser.GenLexer's do not actually use the user-definable state, when lexing the state is always the null value "()". Also, BUG FIX: I discovered that the monadic "fail" function would backtrack if it were evaluated at the end of token stream because it made use of 'Dao.NewParser.getCursor' which required there be at least one token to succeed. This has been fixed now.

printedheart/Dao