Some class instances from the base monad could not pass through SeldaT, ie. SeldaT b (StateT s IO) did not have a MonadState s instance,
SeldaT could only be used as outermost element in the transformer stack, ie. StateT s (SeldaT b IO) did not have a MonadSelda instance,
The use of onException made 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.
This PR fixes the following limitations:
SeldaT
, ie.SeldaT b (StateT s IO)
did not have aMonadState s
instance,SeldaT
could only be used as outermost element in the transformer stack, ie.StateT s (SeldaT b IO)
did not have aMonadSelda
instance,onException
made 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 inexceptions-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.