I am not sure why I removed the functional dependency of the error type on the monadic type in 'Dao.Predicate.MonadPlusError', but I should not have done that. This functional dependency makes the 'Dao.Predicate.MonadPlusError' more consistent with the classes we see in the standard monad transformer library, particularly 'Control.Monad.Error.Class.MonadError'.
Defined the "do()" and "doAll()" built-in Dao functions, which are interfaces to Dao's recursive string query mechanism. I have also added a fifth test program, and initial results look like I have not made any mistakes. I credit Haskell's wonderful static type system for, as always, letting me write a function and see it work exactly as I intended it to the first time.