I am going to try and make my parsers work on arrays as much as possible. I have instantiated the 'Dao.NewParser.GenParseTable' into the Monad, MonadPlus, Applicative, and Alternative classes such that whenever possible an array of choices is created.
I am going to change the 'Dao.NewParser.GenParser' to be the data type that is currently called 'Dao.NewParser.GenParseTable'. I have re-named 'GenParser' to 'SimParser' (simple parser).
Renamed a whole bunch of stuff, I think the new names are more explanatory of how the new parser works. Also instantiated what is now 'Dao.NewParser.GenParser' (which used to be 'Dao.NewParser.GenParseTable') into the 'MonadState', 'MonadError', and 'ErrorMonadPlus' classes.
Changed the name of 'Dao.Predicate.ErrorMonadPlus' to 'Dao.Predicate.MonadPlusError', which is a bit more consistent with the naming convention used throughout the Monad Transformer Library.