selda icon indicating copy to clipboard operation
selda copied to clipboard

Improve monad transformers support

Open madidier opened this issue 1 year ago • 2 comments

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 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.

madidier avatar Aug 23 '24 18:08 madidier

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 :)

madidier avatar Oct 25 '25 11:10 madidier

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 :)

exaexa avatar Oct 25 '25 12:10 exaexa