>>> throwErrorFailT (fail "A bad thing" >> pure () :: FailT String (Except FailException) ()) ExceptT (Identity (Left FailException "A bad thing" CallStack (from HasCallStack): ...
>>> import Control.Monad.Trans.Fail.String >>> throwErrorFailT (fail "A bad thing" >> pure () :: FailT (Except FailException) ()) ExceptT (Identity (Left FailException "A bad thing" CallStack (from HasCallStack): ...
>>> import Control.Monad.Trans.Fail.Text >>> throwErrorFailT (fail "A bad thing" >> pure () :: FailT (Except FailException) ()) ExceptT (Identity (Left FailException "A bad thing" CallStack (from HasCallStack): ...