Improve monad transformers support
This PR fixes the following limitations:
- Some class instances from the base monad could not pass through
SeldaT, ie.SeldaT b (StateT s IO)did not have aMonadState sinstance, -
SeldaTcould only be used as outermost element in the transformer stack, ie.StateT s (SeldaT b IO)did not have aMonadSeldainstance, - The use of
onExceptionmade it unsafe to use a base monad that uses any form of short-circuiting that is not an exception, ie. ExceptT.
Fixing that last point requires using generalBracket introduced in exceptions-0.9, so I had to bump the dependency requirement. I am not sure how this impacts the range of GHC versions that can be supported.
Supporting ExceptT/MonadError is rather important for applications based on servant.
Hi @exaexa. Thanks for having a look at this PR. To be honest, I haven't touched this project in over a year, so I have no update to share. Should be fine as long as the code still compiles and the tests pass :)
Should be fine as long as the code still compiles and the tests pass :)
OK thanks for confirm, that indeed seems to be the case :)