module Network.Gitit.Compat.Except (
ExceptT
, Except
, Error(..)
, runExceptT
, runExcept
, MonadError
, throwError
, catchError )
where
#if MIN_VERSION_mtl(2,2,1)
import Control.Monad.Except
class Error a where
noMsg :: a
strMsg :: String -> a
noMsg = strMsg ""
strMsg _ = noMsg
#else
import Control.Monad.Error
import Control.Monad.Identity (Identity, runIdentity)
type ExceptT = ErrorT
type Except s a = ErrorT s Identity a
runExceptT :: ExceptT e m a -> m (Either e a)
runExceptT = runErrorT
runExcept :: ExceptT e Identity a -> Either e a
runExcept = runIdentity . runExceptT
#endif