xml-extractors-0.4.0.2: Extension to the xml package to extract data from parsed xml

Safe HaskellSafe
LanguageHaskell2010

Text.XML.Light.Extractors.Internal.Result

Synopsis

Documentation

data Result e a Source #

Result is like Either but with two error states, Fail and Fatal.

Fail is precisely analogous to Left while Fatal has short cut semantics for Alternative.

The idea is that Fatal errors cannot be circumvented by <|> etc.

Constructors

Fatal e 
Fail e 
Ok a 

Instances

Monad (Result e) Source # 

Methods

(>>=) :: Result e a -> (a -> Result e b) -> Result e b #

(>>) :: Result e a -> Result e b -> Result e b #

return :: a -> Result e a #

fail :: String -> Result e a #

Functor (Result e) Source # 

Methods

fmap :: (a -> b) -> Result e a -> Result e b #

(<$) :: a -> Result e b -> Result e a #

Applicative (Result e) Source # 

Methods

pure :: a -> Result e a #

(<*>) :: Result e (a -> b) -> Result e a -> Result e b #

(*>) :: Result e a -> Result e b -> Result e b #

(<*) :: Result e a -> Result e b -> Result e a #

Error e => Alternative (Result e) Source # 

Methods

empty :: Result e a #

(<|>) :: Result e a -> Result e a -> Result e a #

some :: Result e a -> Result e [a] #

many :: Result e a -> Result e [a] #

(Show e, Show a) => Show (Result e a) Source # 

Methods

showsPrec :: Int -> Result e a -> ShowS #

show :: Result e a -> String #

showList :: [Result e a] -> ShowS #

toEither :: Result a b -> Either a b Source #

Maps Fail and Fatal to Left.

escalate :: Result e a -> Result e a Source #

Maps Fail to Fatal.

data ResultT e m a Source #

Instances

Error e => MonadTrans (ResultT e) Source # 

Methods

lift :: Monad m => m a -> ResultT e m a #

(Monad m, Error e) => Monad (ResultT e m) Source # 

Methods

(>>=) :: ResultT e m a -> (a -> ResultT e m b) -> ResultT e m b #

(>>) :: ResultT e m a -> ResultT e m b -> ResultT e m b #

return :: a -> ResultT e m a #

fail :: String -> ResultT e m a #

Functor m => Functor (ResultT e m) Source # 

Methods

fmap :: (a -> b) -> ResultT e m a -> ResultT e m b #

(<$) :: a -> ResultT e m b -> ResultT e m a #

(Functor m, Monad m) => Applicative (ResultT e m) Source # 

Methods

pure :: a -> ResultT e m a #

(<*>) :: ResultT e m (a -> b) -> ResultT e m a -> ResultT e m b #

(*>) :: ResultT e m a -> ResultT e m b -> ResultT e m b #

(<*) :: ResultT e m a -> ResultT e m b -> ResultT e m a #

(Functor m, Monad m, Error e) => Alternative (ResultT e m) Source # 

Methods

empty :: ResultT e m a #

(<|>) :: ResultT e m a -> ResultT e m a -> ResultT e m a #

some :: ResultT e m a -> ResultT e m [a] #

many :: ResultT e m a -> ResultT e m [a] #

(Error e, Monad m) => MonadPlus (ResultT e m) Source # 

Methods

mzero :: ResultT e m a #

mplus :: ResultT e m a -> ResultT e m a -> ResultT e m a #

runResultT :: ResultT e m a -> m (Result e a) Source #

throwError :: (Error e, Monad m) => e -> ResultT e m a Source #

throwFatal :: (Error e, Monad m) => e -> ResultT e m a Source #

mapResult :: (Functor m, Monad m) => (Result e1 a1 -> Result e a) -> ResultT e1 m a1 -> ResultT e m a Source #

lift :: MonadTrans t => forall m a. Monad m => m a -> t m a #

Lift a computation from the argument monad to the constructed monad.