exitcode-0.3.0.1: Monad transformer for exit codes
Safe HaskellNone
LanguageHaskell2010

Control.Exitcode.Exitcode

Synopsis

Types

data Exitcode e (f :: Type -> Type) a Source #

An exit code status where failing with a value 0 cannot be represented.

Wraps f (Either (e, NotZero) a) where the NotZero in the Left branch is a proven non-zero integer.

Instances

Instances details
MonadRWS r w s f => MonadRWS r w s (Exitcode e f) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

FoldableWithIndex i f => FoldableWithIndex i (Exitcode e f) Source #
>>> ifoldMap (\_ a -> show a) (mkExitSuccess' 42) :: String
"42"
Instance details

Defined in Control.Exitcode.Exitcode

Methods

ifoldMap :: Monoid m => (i -> a -> m) -> Exitcode e f a -> m #

ifoldMap' :: Monoid m => (i -> a -> m) -> Exitcode e f a -> m #

ifoldr :: (i -> a -> b -> b) -> b -> Exitcode e f a -> b #

ifoldl :: (i -> b -> a -> b) -> b -> Exitcode e f a -> b #

ifoldr' :: (i -> a -> b -> b) -> b -> Exitcode e f a -> b #

ifoldl' :: (i -> b -> a -> b) -> b -> Exitcode e f a -> b #

FunctorWithIndex i f => FunctorWithIndex i (Exitcode e f) Source #
>>> imap (\_ a -> a + 1) (mkExitSuccess' 3) :: Exitcode' () Int
Exitcode (Identity (Right 4))
Instance details

Defined in Control.Exitcode.Exitcode

Methods

imap :: (i -> a -> b) -> Exitcode e f a -> Exitcode e f b #

TraversableWithIndex i f => TraversableWithIndex i (Exitcode e f) Source #
>>> itraverse (\_ a -> Just (a + 1)) (mkExitSuccess' 42) :: Maybe (Exitcode' () Int)
Just (Exitcode (Identity (Right 43)))
Instance details

Defined in Control.Exitcode.Exitcode

Methods

itraverse :: Applicative f0 => (i -> a -> f0 b) -> Exitcode e f a -> f0 (Exitcode e f b) #

MonadError e f => MonadError e (Exitcode e' f) Source #

throwError and catchError operate on the error channel of the base functor f, not on the exit code failure.

>>> import Control.Monad.Except (runExcept)
>>> runExcept (runExitcode (throwError "oops" :: Exitcode () (Control.Monad.Except.Except String) Int))
Left "oops"
Instance details

Defined in Control.Exitcode.Exitcode

Methods

throwError :: e -> Exitcode e' f a #

catchError :: Exitcode e' f a -> (e -> Exitcode e' f a) -> Exitcode e' f a #

MonadReader r f => MonadReader r (Exitcode e f) Source #
>>> import Control.Monad.Reader (runReader)
>>> runReader (runExitcode (ask :: Exitcode () (Control.Monad.Reader.Reader Int) Int)) 42
Right 42
>>> runReader (runExitcode (local (+1) ask :: Exitcode () (Control.Monad.Reader.Reader Int) Int)) 42
Right 43
Instance details

Defined in Control.Exitcode.Exitcode

Methods

ask :: Exitcode e f r #

local :: (r -> r) -> Exitcode e f a -> Exitcode e f a #

reader :: (r -> a) -> Exitcode e f a #

MonadState s f => MonadState s (Exitcode e f) Source #
>>> import Control.Monad.State (runState)
>>> runState (runExitcode (get :: Exitcode () (Control.Monad.State.Lazy.State Int) Int)) 7
(Right 7,7)
>>> runState (runExitcode (put 99 :: Exitcode () (Control.Monad.State.Lazy.State Int) ())) 7
(Right (),99)
Instance details

Defined in Control.Exitcode.Exitcode

Methods

get :: Exitcode e f s #

put :: s -> Exitcode e f () #

state :: (s -> (a, s)) -> Exitcode e f a #

MonadWriter w f => MonadWriter w (Exitcode e f) Source #
>>> import Control.Monad.Writer (runWriter)
>>> runWriter (runExitcode (tell "hello" :: Exitcode () (Control.Monad.Writer.Lazy.Writer String) ()))
(Right (),"hello")
Instance details

Defined in Control.Exitcode.Exitcode

Methods

writer :: (a, w) -> Exitcode e f a #

tell :: w -> Exitcode e f () #

listen :: Exitcode e f a -> Exitcode e f (a, w) #

pass :: Exitcode e f (a, w -> w) -> Exitcode e f a #

BindTrans (Exitcode e) Source #
>>> import Data.Functor.Bind.Trans (liftB)
>>> runExitcode (liftB (Identity 42) :: Exitcode' () Int)
Identity (Right 42)
Instance details

Defined in Control.Exitcode.Exitcode

Methods

liftB :: Bind b => b a -> Exitcode e b a #

MonadTrans (Exitcode e) Source #
>>> import Control.Monad.Trans.Class (lift)
>>> runExitcode (lift (Identity 42) :: Exitcode' () Int)
Identity (Right 42)
Instance details

Defined in Control.Exitcode.Exitcode

Methods

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

MonadFix f => MonadFix (Exitcode e f) Source #
>>> import Control.Monad.Fix (mfix)
>>> runExitcode (mfix (const (mkExitSuccess' 42)) :: Exitcode' () Int)
Identity (Right 42)
>>> runExitcode (mfix (const (mkExitFailure1' ())) :: Exitcode' () Int)
Identity (Left ((),NotZero True (Positive 1)))
Instance details

Defined in Control.Exitcode.Exitcode

Methods

mfix :: (a -> Exitcode e f a) -> Exitcode e f a #

MonadIO f => MonadIO (Exitcode e f) Source #
>>> import Control.Monad.IO.Class (liftIO)
>>> runExitcode (liftIO (pure 42) :: Exitcode () IO Int)
Right 42
Instance details

Defined in Control.Exitcode.Exitcode

Methods

liftIO :: IO a -> Exitcode e f a #

Foldable f => Foldable (Exitcode e f) Source #
>>> foldMap show (mkExitSuccess' 42) :: String
"42"
>>> foldMap show (mkExitFailure1' () :: Exitcode' () Int) :: String
""
Instance details

Defined in Control.Exitcode.Exitcode

Methods

fold :: Monoid m => Exitcode e f m -> m #

foldMap :: Monoid m => (a -> m) -> Exitcode e f a -> m #

foldMap' :: Monoid m => (a -> m) -> Exitcode e f a -> m #

foldr :: (a -> b -> b) -> b -> Exitcode e f a -> b #

foldr' :: (a -> b -> b) -> b -> Exitcode e f a -> b #

foldl :: (b -> a -> b) -> b -> Exitcode e f a -> b #

foldl' :: (b -> a -> b) -> b -> Exitcode e f a -> b #

foldr1 :: (a -> a -> a) -> Exitcode e f a -> a #

foldl1 :: (a -> a -> a) -> Exitcode e f a -> a #

toList :: Exitcode e f a -> [a] #

null :: Exitcode e f a -> Bool #

length :: Exitcode e f a -> Int #

elem :: Eq a => a -> Exitcode e f a -> Bool #

maximum :: Ord a => Exitcode e f a -> a #

minimum :: Ord a => Exitcode e f a -> a #

sum :: Num a => Exitcode e f a -> a #

product :: Num a => Exitcode e f a -> a #

(Eq1 f, Eq e) => Eq1 (Exitcode e f) Source #
>>> liftEq (==) (mkExitSuccess' 1) (mkExitSuccess' 1 :: Exitcode' () Int)
True
>>> liftEq (==) (mkExitSuccess' 1) (mkExitSuccess' 2 :: Exitcode' () Int)
False
Instance details

Defined in Control.Exitcode.Exitcode

Methods

liftEq :: (a -> b -> Bool) -> Exitcode e f a -> Exitcode e f b -> Bool #

(Ord1 f, Ord e) => Ord1 (Exitcode e f) Source #
>>> liftCompare compare (mkExitSuccess' 1) (mkExitSuccess' 2 :: Exitcode' () Int)
LT
Instance details

Defined in Control.Exitcode.Exitcode

Methods

liftCompare :: (a -> b -> Ordering) -> Exitcode e f a -> Exitcode e f b -> Ordering #

(Show1 f, Show e) => Show1 (Exitcode e f) Source #
>>> liftShowsPrec showsPrec showList 0 (mkExitSuccess' 42 :: Exitcode' () Int) ""
"Exitcode (Identity (Right 42))"
Instance details

Defined in Control.Exitcode.Exitcode

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Exitcode e f a -> ShowS #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Exitcode e f a] -> ShowS #

Traversable f => Traversable (Exitcode e f) Source #
>>> traverse Just (mkExitSuccess' 42) :: Maybe (Exitcode' () Int)
Just (Exitcode (Identity (Right 42)))
>>> traverse (const Nothing) (mkExitSuccess' 42) :: Maybe (Exitcode' () Int)
Nothing
>>> traverse Just (mkExitFailure1' () :: Exitcode' () Int) :: Maybe (Exitcode' () Int)
Just (Exitcode (Identity (Left ((),NotZero True (Positive 1)))))
Instance details

Defined in Control.Exitcode.Exitcode

Methods

traverse :: Applicative f0 => (a -> f0 b) -> Exitcode e f a -> f0 (Exitcode e f b) #

sequenceA :: Applicative f0 => Exitcode e f (f0 a) -> f0 (Exitcode e f a) #

mapM :: Monad m => (a -> m b) -> Exitcode e f a -> m (Exitcode e f b) #

sequence :: Monad m => Exitcode e f (m a) -> m (Exitcode e f a) #

Monad f => Applicative (Exitcode e f) Source #
>>> pure 42 :: Exitcode' () Int
Exitcode (Identity (Right 42))
>>> mkExitSuccess' (+1) <*> mkExitSuccess' 3 :: Exitcode' () Int
Exitcode (Identity (Right 4))
>>> mkExitFailure1' () <*> mkExitSuccess' 3 :: Exitcode' () Int
Exitcode (Identity (Left ((),NotZero True (Positive 1))))
Instance details

Defined in Control.Exitcode.Exitcode

Methods

pure :: a -> Exitcode e f a #

(<*>) :: Exitcode e f (a -> b) -> Exitcode e f a -> Exitcode e f b #

liftA2 :: (a -> b -> c) -> Exitcode e f a -> Exitcode e f b -> Exitcode e f c #

(*>) :: Exitcode e f a -> Exitcode e f b -> Exitcode e f b #

(<*) :: Exitcode e f a -> Exitcode e f b -> Exitcode e f a #

Functor f => Functor (Exitcode e f) Source #
>>> fmap (+1) (mkExitSuccess' 3) :: Exitcode' () Int
Exitcode (Identity (Right 4))
>>> fmap (+1) (mkExitFailure1' ()) :: Exitcode' () Int
Exitcode (Identity (Left ((),NotZero True (Positive 1))))
Instance details

Defined in Control.Exitcode.Exitcode

Methods

fmap :: (a -> b) -> Exitcode e f a -> Exitcode e f b #

(<$) :: a -> Exitcode e f b -> Exitcode e f a #

Monad f => Monad (Exitcode e f) Source #
>>> mkExitSuccess' 3 >>= (\x -> mkExitSuccess' (x + 1)) :: Exitcode' () Int
Exitcode (Identity (Right 4))
>>> mkExitFailure1' () >>= (\x -> mkExitSuccess' (x + 1)) :: Exitcode' () Int
Exitcode (Identity (Left ((),NotZero True (Positive 1))))
Instance details

Defined in Control.Exitcode.Exitcode

Methods

(>>=) :: Exitcode e f a -> (a -> Exitcode e f b) -> Exitcode e f b #

(>>) :: Exitcode e f a -> Exitcode e f b -> Exitcode e f b #

return :: a -> Exitcode e f a #

(NFData1 f, NFData e) => NFData1 (Exitcode e f) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

liftRnf :: (a -> ()) -> Exitcode e f a -> () #

MonadCont f => MonadCont (Exitcode e f) Source #
>>> import Control.Monad.Cont (runCont)
>>> runCont (runExitcode (callCC (\k -> k 42) :: Exitcode () (Control.Monad.Cont.Cont (Either ((), NotZero) Int)) Int)) id
Right 42
Instance details

Defined in Control.Exitcode.Exitcode

Methods

callCC :: ((a -> Exitcode e f b) -> Exitcode e f a) -> Exitcode e f a #

Monad f => Alt (Exitcode e f) Source #
>>> mkExitFailure1' () <!> mkExitSuccess' 42 :: Exitcode' () Int
Exitcode (Identity (Right 42))
>>> mkExitSuccess' 1 <!> mkExitSuccess' 2 :: Exitcode' () Int
Exitcode (Identity (Right 1))
Instance details

Defined in Control.Exitcode.Exitcode

Methods

(<!>) :: Exitcode e f a -> Exitcode e f a -> Exitcode e f a #

some :: Applicative (Exitcode e f) => Exitcode e f a -> Exitcode e f [a] #

many :: Applicative (Exitcode e f) => Exitcode e f a -> Exitcode e f [a] #

Monad f => Apply (Exitcode e f) Source #
>>> mkExitSuccess' (+1) <*> mkExitSuccess' 3 :: Exitcode' () Int
Exitcode (Identity (Right 4))
>>> mkExitFailure1' () <*> mkExitSuccess' 3 :: Exitcode' () Int
Exitcode (Identity (Left ((),NotZero True (Positive 1))))
Instance details

Defined in Control.Exitcode.Exitcode

Methods

(<.>) :: Exitcode e f (a -> b) -> Exitcode e f a -> Exitcode e f b #

(.>) :: Exitcode e f a -> Exitcode e f b -> Exitcode e f b #

(<.) :: Exitcode e f a -> Exitcode e f b -> Exitcode e f a #

liftF2 :: (a -> b -> c) -> Exitcode e f a -> Exitcode e f b -> Exitcode e f c #

Monad f => Bind (Exitcode e f) Source #
>>> mkExitSuccess' 3 >>- (\x -> mkExitSuccess' (x + 1)) :: Exitcode' () Int
Exitcode (Identity (Right 4))
Instance details

Defined in Control.Exitcode.Exitcode

Methods

(>>-) :: Exitcode e f a -> (a -> Exitcode e f b) -> Exitcode e f b #

join :: Exitcode e f (Exitcode e f a) -> Exitcode e f a #

Extend f => Extend (Exitcode e f) Source #
>>> duplicated (mkExitFailure1' ()) :: Exitcode' () (Exitcode' () ())
Exitcode (Identity (Right (Exitcode (Identity (Left ((),NotZero True (Positive 1)))))))
>>> duplicated (mkExitSuccess' "abc") :: Exitcode' () (Exitcode' () String)
Exitcode (Identity (Right (Exitcode (Identity (Right "abc")))))
Instance details

Defined in Control.Exitcode.Exitcode

Methods

duplicated :: Exitcode e f a -> Exitcode e f (Exitcode e f a) #

extended :: (Exitcode e f a -> b) -> Exitcode e f a -> Exitcode e f b #

(Monoid a, Monad f) => Monoid (Exitcode e f a) Source #
>>> mempty :: Exitcode' () String
Exitcode (Identity (Right ""))
Instance details

Defined in Control.Exitcode.Exitcode

Methods

mempty :: Exitcode e f a #

mappend :: Exitcode e f a -> Exitcode e f a -> Exitcode e f a #

mconcat :: [Exitcode e f a] -> Exitcode e f a #

(Semigroup a, Monad f) => Semigroup (Exitcode e f a) Source #
>>> mkExitSuccess' "abc" <> mkExitSuccess' "def" :: Exitcode' () String
Exitcode (Identity (Right "abcdef"))
>>> mkExitSuccess' "abc" <> mkExitFailure1' () :: Exitcode' () String
Exitcode (Identity (Right "abc"))
>>> mkExitFailure1' () <> mkExitSuccess' "def" :: Exitcode' () String
Exitcode (Identity (Right "def"))
>>> (mkExitFailure1' () :: Exitcode' () String) <> mkExitFailure_1' ()
Exitcode (Identity (Left ((),NotZero False (Positive 1))))
Instance details

Defined in Control.Exitcode.Exitcode

Methods

(<>) :: Exitcode e f a -> Exitcode e f a -> Exitcode e f a #

sconcat :: NonEmpty (Exitcode e f a) -> Exitcode e f a #

stimes :: Integral b => b -> Exitcode e f a -> Exitcode e f a #

Generic (Exitcode e f a) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Associated Types

type Rep (Exitcode e f a) 
Instance details

Defined in Control.Exitcode.Exitcode

type Rep (Exitcode e f a) = D1 ('MetaData "Exitcode" "Control.Exitcode.Exitcode" "exitcode-0.3.0.1-IJt82AvRg4IJtJeyb1cfTm" 'True) (C1 ('MetaCons "Exitcode" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f (Either (e, NotZero) a)))))

Methods

from :: Exitcode e f a -> Rep (Exitcode e f a) x #

to :: Rep (Exitcode e f a) x -> Exitcode e f a #

Show (f (Either (e, NotZero) a)) => Show (Exitcode e f a) Source #
>>> show (mkExitSuccess' "abc" :: Exitcode' () String)
"Exitcode (Identity (Right \"abc\"))"
>>> show (mkExitFailure1' 'x' :: Exitcode' Char ())
"Exitcode (Identity (Left ('x',NotZero True (Positive 1))))"
Instance details

Defined in Control.Exitcode.Exitcode

Methods

showsPrec :: Int -> Exitcode e f a -> ShowS #

show :: Exitcode e f a -> String #

showList :: [Exitcode e f a] -> ShowS #

(NFData1 f, NFData e, NFData a) => NFData (Exitcode e f a) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

rnf :: Exitcode e f a -> () #

Eq (f (Either (e, NotZero) a)) => Eq (Exitcode e f a) Source #
>>> mkExitSuccess' 1 == mkExitSuccess' 1 :: Bool
True
>>> mkExitSuccess' 1 == (mkExitFailure1' () :: Exitcode' () Int) :: Bool
False
Instance details

Defined in Control.Exitcode.Exitcode

Methods

(==) :: Exitcode e f a -> Exitcode e f a -> Bool #

(/=) :: Exitcode e f a -> Exitcode e f a -> Bool #

Ord (f (Either (e, NotZero) a)) => Ord (Exitcode e f a) Source #
>>> compare (mkExitSuccess' 1 :: Exitcode' () Int) (mkExitSuccess' 2)
LT
>>> compare (mkExitSuccess' 1 :: Exitcode' () Int) (mkExitFailure1' ())
GT
Instance details

Defined in Control.Exitcode.Exitcode

Methods

compare :: Exitcode e f a -> Exitcode e f a -> Ordering #

(<) :: Exitcode e f a -> Exitcode e f a -> Bool #

(<=) :: Exitcode e f a -> Exitcode e f a -> Bool #

(>) :: Exitcode e f a -> Exitcode e f a -> Bool #

(>=) :: Exitcode e f a -> Exitcode e f a -> Bool #

max :: Exitcode e f a -> Exitcode e f a -> Exitcode e f a #

min :: Exitcode e f a -> Exitcode e f a -> Exitcode e f a #

AsExitcode (Exitcode e f a) e f a Source #
>>> preview _Exitcode (mkExitSuccess' "abc" :: Exitcode' () String) :: Maybe (Exitcode' () String)
Just (Exitcode (Identity (Right "abc")))
Instance details

Defined in Control.Exitcode.Optics

Methods

_Exitcode :: Prism' (Exitcode e f a) (Exitcode e f a) Source #

AsExitcodeBifunctor (Exitcode e f a) f e a Source #
>>> preview _ExitcodeBifunctor (mkExitSuccess' "abc" :: Exitcode' () String)
Just (ExitcodeBifunctor (Exitcode (Identity (Right "abc"))))
Instance details

Defined in Control.Exitcode.Optics

GetExitcode (Exitcode e f a) e f a Source #
>>> view getExitcode (mkExitSuccess' "abc" :: Exitcode' () String)
Exitcode (Identity (Right "abc"))
Instance details

Defined in Control.Exitcode.Optics

Methods

getExitcode :: Getter (Exitcode e f a) (Exitcode e f a) Source #

GetExitcodeBifunctor (Exitcode e f a) f e a Source #
>>> view getExitcodeBifunctor (mkExitSuccess' "abc" :: Exitcode' () String)
ExitcodeBifunctor (Exitcode (Identity (Right "abc")))
Instance details

Defined in Control.Exitcode.Optics

HasExitcode (Exitcode e f a) e f a Source #
>>> view exitcode (mkExitSuccess' "abc" :: Exitcode' () String)
Exitcode (Identity (Right "abc"))
Instance details

Defined in Control.Exitcode.Optics

Methods

exitcode :: Lens' (Exitcode e f a) (Exitcode e f a) Source #

HasExitcodeBifunctor (Exitcode e f a) f e a Source #
>>> view exitcodeBifunctor (mkExitSuccess' "abc" :: Exitcode' () String)
ExitcodeBifunctor (Exitcode (Identity (Right "abc")))
>>> set exitcodeBifunctor (ExitcodeBifunctor (mkExitFailure1' ())) (mkExitSuccess' "abc" :: Exitcode' () String)
Exitcode (Identity (Left ((),NotZero True (Positive 1))))
Instance details

Defined in Control.Exitcode.Optics

ReviewExitcode (Exitcode e f a) e f a Source #
>>> review reviewExitcode (mkExitSuccess' "abc" :: Exitcode' () String) :: Exitcode' () String
Exitcode (Identity (Right "abc"))
Instance details

Defined in Control.Exitcode.Optics

Methods

reviewExitcode :: Review (Exitcode e f a) (Exitcode e f a) Source #

ReviewExitcodeBifunctor (Exitcode e f a) f e a Source #
>>> review reviewExitcodeBifunctor (ExitcodeBifunctor (mkExitSuccess' "abc") :: ExitcodeBifunctor' () String) :: Exitcode' () String
Exitcode (Identity (Right "abc"))
Instance details

Defined in Control.Exitcode.Optics

type Rep (Exitcode e f a) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

type Rep (Exitcode e f a) = D1 ('MetaData "Exitcode" "Control.Exitcode.Exitcode" "exitcode-0.3.0.1-IJt82AvRg4IJtJeyb1cfTm" 'True) (C1 ('MetaCons "Exitcode" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f (Either (e, NotZero) a)))))

type Exitcode' e a = Exitcode e Identity a Source #

Exitcode specialised to Identity.

newtype ExitcodeBifunctor (f :: Type -> Type) e a Source #

ExitcodeBifunctor reorders the type parameters of Exitcode so that e and a are last, enabling Bifunctor, Bifoldable, and Bitraversable instances.

Constructors

ExitcodeBifunctor (Exitcode e f a) 

Instances

Instances details
MonadRWS r w s f => MonadRWS r w s (ExitcodeBifunctor f e) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

FoldableWithIndex i f => FoldableWithIndex i (ExitcodeBifunctor f e) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

ifoldMap :: Monoid m => (i -> a -> m) -> ExitcodeBifunctor f e a -> m #

ifoldMap' :: Monoid m => (i -> a -> m) -> ExitcodeBifunctor f e a -> m #

ifoldr :: (i -> a -> b -> b) -> b -> ExitcodeBifunctor f e a -> b #

ifoldl :: (i -> b -> a -> b) -> b -> ExitcodeBifunctor f e a -> b #

ifoldr' :: (i -> a -> b -> b) -> b -> ExitcodeBifunctor f e a -> b #

ifoldl' :: (i -> b -> a -> b) -> b -> ExitcodeBifunctor f e a -> b #

FunctorWithIndex i f => FunctorWithIndex i (ExitcodeBifunctor f e) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

imap :: (i -> a -> b) -> ExitcodeBifunctor f e a -> ExitcodeBifunctor f e b #

TraversableWithIndex i f => TraversableWithIndex i (ExitcodeBifunctor f e) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

itraverse :: Applicative f0 => (i -> a -> f0 b) -> ExitcodeBifunctor f e a -> f0 (ExitcodeBifunctor f e b) #

MonadError e f => MonadError e (ExitcodeBifunctor f e') Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

throwError :: e -> ExitcodeBifunctor f e' a #

catchError :: ExitcodeBifunctor f e' a -> (e -> ExitcodeBifunctor f e' a) -> ExitcodeBifunctor f e' a #

MonadReader r f => MonadReader r (ExitcodeBifunctor f e) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

ask :: ExitcodeBifunctor f e r #

local :: (r -> r) -> ExitcodeBifunctor f e a -> ExitcodeBifunctor f e a #

reader :: (r -> a) -> ExitcodeBifunctor f e a #

MonadState s f => MonadState s (ExitcodeBifunctor f e) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

get :: ExitcodeBifunctor f e s #

put :: s -> ExitcodeBifunctor f e () #

state :: (s -> (a, s)) -> ExitcodeBifunctor f e a #

MonadWriter w f => MonadWriter w (ExitcodeBifunctor f e) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

writer :: (a, w) -> ExitcodeBifunctor f e a #

tell :: w -> ExitcodeBifunctor f e () #

listen :: ExitcodeBifunctor f e a -> ExitcodeBifunctor f e (a, w) #

pass :: ExitcodeBifunctor f e (a, w -> w) -> ExitcodeBifunctor f e a #

Foldable f => Bifoldable (ExitcodeBifunctor f) Source #
>>> bifoldMap show show (ExitcodeBifunctor (mkExitFailure1' 'x') :: ExitcodeBifunctor' Char Int)
"'x'"
>>> bifoldMap show show (ExitcodeBifunctor (mkExitSuccess' 42) :: ExitcodeBifunctor' Char Int)
"42"
Instance details

Defined in Control.Exitcode.Exitcode

Methods

bifold :: Monoid m => ExitcodeBifunctor f m m -> m #

bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> ExitcodeBifunctor f a b -> m #

bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> ExitcodeBifunctor f a b -> c #

bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> ExitcodeBifunctor f a b -> c #

Functor f => Bifunctor (ExitcodeBifunctor f) Source #
>>> bimap (+1) (+10) (ExitcodeBifunctor (mkExitFailure1' 5) :: ExitcodeBifunctor' Int Int)
ExitcodeBifunctor (Exitcode (Identity (Left (6,NotZero True (Positive 1)))))
>>> bimap (+1) (+10) (ExitcodeBifunctor (mkExitSuccess' 5) :: ExitcodeBifunctor' Int Int)
ExitcodeBifunctor (Exitcode (Identity (Right 15)))
Instance details

Defined in Control.Exitcode.Exitcode

Methods

bimap :: (a -> b) -> (c -> d) -> ExitcodeBifunctor f a c -> ExitcodeBifunctor f b d #

first :: (a -> b) -> ExitcodeBifunctor f a c -> ExitcodeBifunctor f b c #

second :: (b -> c) -> ExitcodeBifunctor f a b -> ExitcodeBifunctor f a c #

Traversable f => Bitraversable (ExitcodeBifunctor f) Source #
>>> bitraverse (Just . (+1)) (Just . (+10)) (ExitcodeBifunctor (mkExitFailure1' 5) :: ExitcodeBifunctor' Int Int)
Just (ExitcodeBifunctor (Exitcode (Identity (Left (6,NotZero True (Positive 1))))))
>>> bitraverse (Just . (+1)) (Just . (+10)) (ExitcodeBifunctor (mkExitSuccess' 5) :: ExitcodeBifunctor' Int Int)
Just (ExitcodeBifunctor (Exitcode (Identity (Right 15))))
Instance details

Defined in Control.Exitcode.Exitcode

Methods

bitraverse :: Applicative f0 => (a -> f0 c) -> (b -> f0 d) -> ExitcodeBifunctor f a b -> f0 (ExitcodeBifunctor f c d) #

MonadFix f => MonadFix (ExitcodeBifunctor f e) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

mfix :: (a -> ExitcodeBifunctor f e a) -> ExitcodeBifunctor f e a #

MonadIO f => MonadIO (ExitcodeBifunctor f e) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

liftIO :: IO a -> ExitcodeBifunctor f e a #

Foldable f => Foldable (ExitcodeBifunctor f e) Source #
>>> foldMap show (ExitcodeBifunctor (mkExitSuccess' 42) :: ExitcodeBifunctor' () Int)
"42"
Instance details

Defined in Control.Exitcode.Exitcode

Methods

fold :: Monoid m => ExitcodeBifunctor f e m -> m #

foldMap :: Monoid m => (a -> m) -> ExitcodeBifunctor f e a -> m #

foldMap' :: Monoid m => (a -> m) -> ExitcodeBifunctor f e a -> m #

foldr :: (a -> b -> b) -> b -> ExitcodeBifunctor f e a -> b #

foldr' :: (a -> b -> b) -> b -> ExitcodeBifunctor f e a -> b #

foldl :: (b -> a -> b) -> b -> ExitcodeBifunctor f e a -> b #

foldl' :: (b -> a -> b) -> b -> ExitcodeBifunctor f e a -> b #

foldr1 :: (a -> a -> a) -> ExitcodeBifunctor f e a -> a #

foldl1 :: (a -> a -> a) -> ExitcodeBifunctor f e a -> a #

toList :: ExitcodeBifunctor f e a -> [a] #

null :: ExitcodeBifunctor f e a -> Bool #

length :: ExitcodeBifunctor f e a -> Int #

elem :: Eq a => a -> ExitcodeBifunctor f e a -> Bool #

maximum :: Ord a => ExitcodeBifunctor f e a -> a #

minimum :: Ord a => ExitcodeBifunctor f e a -> a #

sum :: Num a => ExitcodeBifunctor f e a -> a #

product :: Num a => ExitcodeBifunctor f e a -> a #

(Eq1 f, Eq e) => Eq1 (ExitcodeBifunctor f e) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

liftEq :: (a -> b -> Bool) -> ExitcodeBifunctor f e a -> ExitcodeBifunctor f e b -> Bool #

(Ord1 f, Ord e) => Ord1 (ExitcodeBifunctor f e) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

liftCompare :: (a -> b -> Ordering) -> ExitcodeBifunctor f e a -> ExitcodeBifunctor f e b -> Ordering #

(Show1 f, Show e) => Show1 (ExitcodeBifunctor f e) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> ExitcodeBifunctor f e a -> ShowS #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [ExitcodeBifunctor f e a] -> ShowS #

Traversable f => Traversable (ExitcodeBifunctor f e) Source #
>>> traverse Just (ExitcodeBifunctor (mkExitSuccess' 42) :: ExitcodeBifunctor' () Int)
Just (ExitcodeBifunctor (Exitcode (Identity (Right 42))))
Instance details

Defined in Control.Exitcode.Exitcode

Methods

traverse :: Applicative f0 => (a -> f0 b) -> ExitcodeBifunctor f e a -> f0 (ExitcodeBifunctor f e b) #

sequenceA :: Applicative f0 => ExitcodeBifunctor f e (f0 a) -> f0 (ExitcodeBifunctor f e a) #

mapM :: Monad m => (a -> m b) -> ExitcodeBifunctor f e a -> m (ExitcodeBifunctor f e b) #

sequence :: Monad m => ExitcodeBifunctor f e (m a) -> m (ExitcodeBifunctor f e a) #

Monad f => Applicative (ExitcodeBifunctor f e) Source #
>>> pure 42 :: ExitcodeBifunctor' () Int
ExitcodeBifunctor (Exitcode (Identity (Right 42)))
Instance details

Defined in Control.Exitcode.Exitcode

Methods

pure :: a -> ExitcodeBifunctor f e a #

(<*>) :: ExitcodeBifunctor f e (a -> b) -> ExitcodeBifunctor f e a -> ExitcodeBifunctor f e b #

liftA2 :: (a -> b -> c) -> ExitcodeBifunctor f e a -> ExitcodeBifunctor f e b -> ExitcodeBifunctor f e c #

(*>) :: ExitcodeBifunctor f e a -> ExitcodeBifunctor f e b -> ExitcodeBifunctor f e b #

(<*) :: ExitcodeBifunctor f e a -> ExitcodeBifunctor f e b -> ExitcodeBifunctor f e a #

Functor f => Functor (ExitcodeBifunctor f e) Source #
>>> fmap (+1) (ExitcodeBifunctor (mkExitSuccess' 3) :: ExitcodeBifunctor' () Int)
ExitcodeBifunctor (Exitcode (Identity (Right 4)))
Instance details

Defined in Control.Exitcode.Exitcode

Methods

fmap :: (a -> b) -> ExitcodeBifunctor f e a -> ExitcodeBifunctor f e b #

(<$) :: a -> ExitcodeBifunctor f e b -> ExitcodeBifunctor f e a #

Monad f => Monad (ExitcodeBifunctor f e) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

(>>=) :: ExitcodeBifunctor f e a -> (a -> ExitcodeBifunctor f e b) -> ExitcodeBifunctor f e b #

(>>) :: ExitcodeBifunctor f e a -> ExitcodeBifunctor f e b -> ExitcodeBifunctor f e b #

return :: a -> ExitcodeBifunctor f e a #

(NFData1 f, NFData e) => NFData1 (ExitcodeBifunctor f e) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

liftRnf :: (a -> ()) -> ExitcodeBifunctor f e a -> () #

MonadCont f => MonadCont (ExitcodeBifunctor f e) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

callCC :: ((a -> ExitcodeBifunctor f e b) -> ExitcodeBifunctor f e a) -> ExitcodeBifunctor f e a #

Monad f => Alt (ExitcodeBifunctor f e) Source #
>>> (ExitcodeBifunctor (mkExitFailure1' ()) :: ExitcodeBifunctor' () Int) <!> ExitcodeBifunctor (mkExitSuccess' 42)
ExitcodeBifunctor (Exitcode (Identity (Right 42)))
Instance details

Defined in Control.Exitcode.Exitcode

Monad f => Apply (ExitcodeBifunctor f e) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

(<.>) :: ExitcodeBifunctor f e (a -> b) -> ExitcodeBifunctor f e a -> ExitcodeBifunctor f e b #

(.>) :: ExitcodeBifunctor f e a -> ExitcodeBifunctor f e b -> ExitcodeBifunctor f e b #

(<.) :: ExitcodeBifunctor f e a -> ExitcodeBifunctor f e b -> ExitcodeBifunctor f e a #

liftF2 :: (a -> b -> c) -> ExitcodeBifunctor f e a -> ExitcodeBifunctor f e b -> ExitcodeBifunctor f e c #

Monad f => Bind (ExitcodeBifunctor f e) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Extend f => Extend (ExitcodeBifunctor f e) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

(Monoid a, Monad f) => Monoid (ExitcodeBifunctor f e a) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

(Semigroup a, Monad f) => Semigroup (ExitcodeBifunctor f e a) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Generic (ExitcodeBifunctor f e a) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Associated Types

type Rep (ExitcodeBifunctor f e a) 
Instance details

Defined in Control.Exitcode.Exitcode

type Rep (ExitcodeBifunctor f e a) = D1 ('MetaData "ExitcodeBifunctor" "Control.Exitcode.Exitcode" "exitcode-0.3.0.1-IJt82AvRg4IJtJeyb1cfTm" 'True) (C1 ('MetaCons "ExitcodeBifunctor" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Exitcode e f a))))

Methods

from :: ExitcodeBifunctor f e a -> Rep (ExitcodeBifunctor f e a) x #

to :: Rep (ExitcodeBifunctor f e a) x -> ExitcodeBifunctor f e a #

Show (f (Either (e, NotZero) a)) => Show (ExitcodeBifunctor f e a) Source #
>>> show (ExitcodeBifunctor (mkExitSuccess' "abc") :: ExitcodeBifunctor' () String)
"ExitcodeBifunctor (Exitcode (Identity (Right \"abc\")))"
>>> show (ExitcodeBifunctor (mkExitFailure1' 'x') :: ExitcodeBifunctor' Char ())
"ExitcodeBifunctor (Exitcode (Identity (Left ('x',NotZero True (Positive 1)))))"
Instance details

Defined in Control.Exitcode.Exitcode

(NFData1 f, NFData e, NFData a) => NFData (ExitcodeBifunctor f e a) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Methods

rnf :: ExitcodeBifunctor f e a -> () #

Eq (f (Either (e, NotZero) a)) => Eq (ExitcodeBifunctor f e a) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

Ord (f (Either (e, NotZero) a)) => Ord (ExitcodeBifunctor f e a) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

AsExitcode (ExitcodeBifunctor f e a) e f a Source #
>>> preview _Exitcode (ExitcodeBifunctor (mkExitSuccess' "abc") :: ExitcodeBifunctor' () String) :: Maybe (Exitcode' () String)
Just (Exitcode (Identity (Right "abc")))
Instance details

Defined in Control.Exitcode.Optics

AsExitcodeBifunctor (ExitcodeBifunctor f e a) f e a Source #
>>> preview _ExitcodeBifunctor (ExitcodeBifunctor (mkExitSuccess' "abc") :: ExitcodeBifunctor' () String)
Just (ExitcodeBifunctor (Exitcode (Identity (Right "abc"))))
Instance details

Defined in Control.Exitcode.Optics

GetExitcode (ExitcodeBifunctor f e a) e f a Source #
>>> view getExitcode (ExitcodeBifunctor (mkExitSuccess' "abc") :: ExitcodeBifunctor' () String)
Exitcode (Identity (Right "abc"))
Instance details

Defined in Control.Exitcode.Optics

GetExitcodeBifunctor (ExitcodeBifunctor f e a) f e a Source #
>>> view getExitcodeBifunctor (ExitcodeBifunctor (mkExitSuccess' "abc") :: ExitcodeBifunctor' () String)
ExitcodeBifunctor (Exitcode (Identity (Right "abc")))
Instance details

Defined in Control.Exitcode.Optics

HasExitcode (ExitcodeBifunctor f e a) e f a Source #
>>> view exitcode (ExitcodeBifunctor (mkExitSuccess' "abc") :: ExitcodeBifunctor' () String)
Exitcode (Identity (Right "abc"))
>>> set exitcode (mkExitFailure1' ()) (ExitcodeBifunctor (mkExitSuccess' "abc") :: ExitcodeBifunctor' () String)
ExitcodeBifunctor (Exitcode (Identity (Left ((),NotZero True (Positive 1)))))
Instance details

Defined in Control.Exitcode.Optics

Methods

exitcode :: Lens' (ExitcodeBifunctor f e a) (Exitcode e f a) Source #

HasExitcodeBifunctor (ExitcodeBifunctor f e a) f e a Source #
>>> view exitcodeBifunctor (ExitcodeBifunctor (mkExitSuccess' "abc") :: ExitcodeBifunctor' () String)
ExitcodeBifunctor (Exitcode (Identity (Right "abc")))
Instance details

Defined in Control.Exitcode.Optics

ReviewExitcode (ExitcodeBifunctor f e a) e f a Source #
>>> review reviewExitcode (mkExitSuccess' "abc" :: Exitcode' () String) :: ExitcodeBifunctor' () String
ExitcodeBifunctor (Exitcode (Identity (Right "abc")))
Instance details

Defined in Control.Exitcode.Optics

ReviewExitcodeBifunctor (ExitcodeBifunctor f e a) f e a Source #
>>> review reviewExitcodeBifunctor (ExitcodeBifunctor (mkExitSuccess' "abc") :: ExitcodeBifunctor' () String) :: ExitcodeBifunctor' () String
ExitcodeBifunctor (Exitcode (Identity (Right "abc")))
Instance details

Defined in Control.Exitcode.Optics

type Rep (ExitcodeBifunctor f e a) Source # 
Instance details

Defined in Control.Exitcode.Exitcode

type Rep (ExitcodeBifunctor f e a) = D1 ('MetaData "ExitcodeBifunctor" "Control.Exitcode.Exitcode" "exitcode-0.3.0.1-IJt82AvRg4IJtJeyb1cfTm" 'True) (C1 ('MetaCons "ExitcodeBifunctor" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Exitcode e f a))))

type ExitcodeBifunctor' e a = ExitcodeBifunctor Identity e a Source #

ExitcodeBifunctor specialised to Identity.

Construction

mkExitcode :: Applicative f => f e -> f NotZero -> Exitcode e f a Source #

Construct a failure exitcode with an error value and a non-zero exit code.

>>> mkExitcode (Identity 'x') (Identity nz1) :: Exitcode' Char ()
Exitcode (Identity (Left ('x',NotZero True (Positive 1))))

mkExitcode' :: e -> NotZero -> Exitcode' e a Source #

mkExitcode specialised to Identity.

>>> mkExitcode' 'x' nz1 :: Exitcode' Char ()
Exitcode (Identity (Left ('x',NotZero True (Positive 1))))

mkExitSuccess :: Functor f => f a -> Exitcode e f a Source #

Construct a success exitcode.

>>> mkExitSuccess (Identity "abc") :: Exitcode' () String
Exitcode (Identity (Right "abc"))

mkExitSuccess' :: a -> Exitcode' e a Source #

mkExitSuccess specialised to Identity.

>>> mkExitSuccess' "abc" :: Exitcode' () String
Exitcode (Identity (Right "abc"))

mkExitFailure :: Applicative f => f NotZero -> f e -> Exitcode e f a Source #

Construct a failure exitcode with a proven non-zero exit code.

>>> mkExitFailure (Identity nz1) (Identity 'x') :: Exitcode' Char ()
Exitcode (Identity (Left ('x',NotZero True (Positive 1))))

mkExitFailure' :: NotZero -> e -> Exitcode' e a Source #

mkExitFailure specialised to Identity.

>>> mkExitFailure' nz1 'x' :: Exitcode' Char ()
Exitcode (Identity (Left ('x',NotZero True (Positive 1))))

mkExitFailure1 :: Functor f => f e -> Exitcode e f a Source #

Construct a failure exitcode with exit code 1.

>>> mkExitFailure1 (Identity 'x') :: Exitcode' Char ()
Exitcode (Identity (Left ('x',NotZero True (Positive 1))))

mkExitFailure1' :: e -> Exitcode' e a Source #

mkExitFailure1 specialised to Identity.

>>> mkExitFailure1' 'x' :: Exitcode' Char ()
Exitcode (Identity (Left ('x',NotZero True (Positive 1))))

mkExitFailure_1 :: Functor f => f e -> Exitcode e f a Source #

Construct a failure exitcode with exit code -1.

>>> mkExitFailure_1 (Identity 'x') :: Exitcode' Char ()
Exitcode (Identity (Left ('x',NotZero False (Positive 1))))

mkExitFailure_1' :: e -> Exitcode' e a Source #

mkExitFailure_1 specialised to Identity.

>>> mkExitFailure_1' 'x' :: Exitcode' Char ()
Exitcode (Identity (Left ('x',NotZero False (Positive 1))))

fromExitCode :: Functor f => f ExitCode -> Exitcode () f () Source #

Convert from a base ExitCode. ExitFailure 0 is treated as success.

>>> fromExitCode (Identity ExitSuccess)
Exitcode (Identity (Right ()))
>>> fromExitCode (Identity (ExitFailure 99))
Exitcode (Identity (Left ((),NotZero True (Positive 99))))
>>> fromExitCode (Identity (ExitFailure 0))
Exitcode (Identity (Right ()))

fromExitCode' :: ExitCode -> Exitcode' () () Source #

fromExitCode specialised to Identity.

>>> fromExitCode' ExitSuccess
Exitcode (Identity (Right ()))
>>> fromExitCode' (ExitFailure 99)
Exitcode (Identity (Left ((),NotZero True (Positive 99))))
>>> fromExitCode' (ExitFailure 0)
Exitcode (Identity (Right ()))

toExitCode :: Functor f => Exitcode () f () -> f ExitCode Source #

Convert an exitcode back to f ExitCode.

>>> toExitCode (mkExitSuccess (Identity ()))
Identity ExitSuccess
>>> toExitCode (mkExitFailure1 (Identity ()))
Identity (ExitFailure 1)

toExitCode' :: Exitcode' () () -> ExitCode Source #

toExitCode specialised to Identity.

>>> toExitCode' (mkExitSuccess' ())
ExitSuccess
>>> toExitCode' (mkExitFailure1' ())
ExitFailure 1

hoistExitcode :: (forall x. f x -> g x) -> Exitcode e f a -> Exitcode e g a Source #

Apply a natural transformation to the base functor.

>>> hoistExitcode (Just . runIdentity) (mkExitSuccess' "abc") :: Exitcode () Maybe String
Exitcode (Just (Right "abc"))

embedExitcode :: forall (g :: Type -> Type) f e a. Functor g => (forall x. f x -> Exitcode e g x) -> Exitcode e f a -> Exitcode e g a Source #

Embed a natural transformation that returns an Exitcode.

>>> embedExitcode (\(Identity a) -> mkExitSuccess (Just a)) (mkExitSuccess' "abc") :: Exitcode () Maybe String
Exitcode (Just (Right "abc"))
>>> embedExitcode (\(Identity a) -> mkExitSuccess (Just a)) (mkExitFailure1' ()) :: Exitcode () Maybe ()
Exitcode (Just (Left ((),NotZero True (Positive 1))))

bimapExitcode :: forall (f :: Type -> Type) e e' a a'. Functor f => (e -> e') -> (a -> a') -> Exitcode e f a -> Exitcode e' f a' Source #

Map both the error and success values via Bifunctor on ExitcodeBifunctor.

>>> bimapExitcode (+1) (+10) (mkExitFailure1' 5 :: Exitcode' Int Int)
Exitcode (Identity (Left (6,NotZero True (Positive 1))))
>>> bimapExitcode (+1) (+10) (mkExitSuccess' 5 :: Exitcode' Int Int)
Exitcode (Identity (Right 15))

Extraction

runExitcode :: Exitcode e f a -> f (Either (e, NotZero) a) Source #

Extract the underlying f (Either (e, NotZero) a).

>>> runExitcode (mkExitSuccess' "abc")
Identity (Right "abc")
>>> runExitcode (mkExitFailure1' 'x')
Identity (Left ('x',NotZero True (Positive 1)))

maybeExitcode :: Functor f => Exitcode e f a -> f (Maybe NotZero) Source #

Extract the exit code as Maybe NotZero: Nothing for success, Just n for failure.

>>> maybeExitcode (mkExitSuccess (Identity ())) :: Identity (Maybe NotZero)
Identity Nothing
>>> maybeExitcode (mkExitFailure1 (Identity ())) :: Identity (Maybe NotZero)
Identity (Just (NotZero True (Positive 1)))

maybeExitcode' :: Exitcode' e a -> Maybe NotZero Source #

maybeExitcode specialised to Identity.

>>> maybeExitcode' (mkExitSuccess' ())
Nothing
>>> maybeExitcode' (mkExitFailure1' ())
Just (NotZero True (Positive 1))

Exceptions

tryExitcode :: Exception e' => Exitcode e IO a -> Exitcode e (ExceptT e' IO) a Source #

Try the IO action producing the exitcode, catching exceptions into ExceptT.

liftTryExitcode :: Exception e' => IO a -> Exitcode e (ExceptT e' IO) a Source #

Lift an IO action into Exitcode (ExceptT e' IO), catching exceptions.

Optics

exitCode :: forall (f :: Type -> Type) (g :: Type -> Type). (Functor f, Functor g) => Iso (f ExitCode) (g ExitCode) (Exitcode () (MaybeT f) ()) (Exitcode () (MaybeT g) ()) Source #

Iso between f ExitCode and Exitcode () (MaybeT f) ().

ExitFailure 0 maps to MaybeT Nothing (neither success nor failure). ExitSuccess maps to a success exitcode. ExitFailure n (where n /= 0) maps to a failure exitcode.

>>> import Control.Monad.Trans.Maybe
>>> view exitCode (Identity ExitSuccess)
Exitcode (MaybeT (Identity (Just (Right ()))))
>>> view exitCode (Identity (ExitFailure 99))
Exitcode (MaybeT (Identity (Just (Left ((),NotZero True (Positive 99))))))
>>> view exitCode (Identity (ExitFailure 0))
Exitcode (MaybeT (Identity Nothing))
>>> review exitCode (mkExitSuccess (MaybeT (Identity (Just ()))))
Identity ExitSuccess
>>> review exitCode (mkExitFailure1 (MaybeT (Identity (Just ()))))
Identity (ExitFailure 1)

_Exitcode1 :: forall a a' f. Functor f => (a -> f a') -> Exitcode' a a -> f (Exitcode' a' a') Source #

Lens into the value of an Exitcode' a a, regardless of success or failure. The exit code is preserved.

>>> over _Exitcode1 reverse (mkExitcode' "abc" nz1 :: Exitcode' String String)
Exitcode (Identity (Left ("cba",NotZero True (Positive 1))))
>>> over _Exitcode1 reverse (mkExitSuccess' "def")
Exitcode (Identity (Right "fed"))

_Exitcode1' :: forall (f :: Type -> Type) a. Traversable f => Traversal' (Exitcode a f a) (f a) Source #

_Exitcode1 generalised to Traversable f.

>>> over _Exitcode1' (fmap reverse) (mkExitcode (Identity "abc") (Identity nz1) :: Exitcode String Identity String)
Exitcode (Identity (Left ("cba",NotZero True (Positive 1))))
>>> over _Exitcode1' (fmap reverse) (mkExitSuccess (Identity "def"))
Exitcode (Identity (Right "fed"))

_ExitFailure :: forall (f :: Type -> Type) e a. Traversable f => Prism' (Exitcode e f a) (f (e, NotZero)) Source #

Prism into all-failure exitcodes.

>>> preview _ExitFailure (mkExitFailure1' 'x' :: Exitcode' Char ())
Just (Identity ('x',NotZero True (Positive 1)))
>>> preview _ExitFailure (mkExitSuccess' () :: Exitcode' Char ())
Nothing

_ExitFailure' :: forall e a e' p f. (Choice p, Applicative f) => p (e, NotZero) (f (e', NotZero)) -> p (Exitcode' e a) (f (Exitcode' e' a)) Source #

Type-changing prism into the failure case, specialised to Identity.

>>> preview _ExitFailure' (mkExitFailure1' 'x' :: Exitcode' Char ())
Just ('x',NotZero True (Positive 1))
>>> preview _ExitFailure' (mkExitSuccess' () :: Exitcode' Char ())
Nothing
>>> review _ExitFailure' ('y', nz2) :: Exitcode' Char ()
Exitcode (Identity (Left ('y',NotZero True (Positive 2))))

_ExitFailureCode :: forall (f :: Type -> Type) e a. Traversable f => Traversal' (Exitcode e f a) (f NotZero) Source #

Traversal into the NotZero exit code values when all elements are failures.

>>> over _ExitFailureCode' (const nz1) (mkExitFailure' nz2 'x')
Exitcode (Identity (Left ('x',NotZero True (Positive 1))))

_ExitFailureCode' :: forall e a f. Applicative f => (NotZero -> f NotZero) -> Exitcode' e a -> f (Exitcode' e a) Source #

_ExitFailureCode specialised to Identity.

_ExitFailureValue :: forall (f :: Type -> Type) e a. Traversable f => Traversal' (Exitcode e f a) (f e) Source #

Traversal into the error values when all elements are failures.

>>> over _ExitFailureValue' (const 'y') (mkExitFailure1' 'x')
Exitcode (Identity (Left ('y',NotZero True (Positive 1))))
>>> over _ExitFailureValue' (const 'y') (mkExitSuccess' () :: Exitcode' Char ())
Exitcode (Identity (Right ()))

_ExitFailureValue' :: forall e a e' f. Applicative f => (e -> f e') -> Exitcode' e a -> f (Exitcode' e' a) Source #

_ExitFailureValue specialised to Identity.

_ExitSuccess :: forall (f :: Type -> Type) e a. Traversable f => Prism' (Exitcode e f a) (f a) Source #

Prism into all-success exitcodes.

>>> preview _ExitSuccess (mkExitSuccess' "abc" :: Exitcode' () String)
Just (Identity "abc")
>>> preview _ExitSuccess (mkExitFailure1' () :: Exitcode' () String)
Nothing

_ExitSuccess' :: forall e a a' p f. (Choice p, Applicative f) => p a (f a') -> p (Exitcode' e a) (f (Exitcode' e a')) Source #

_ExitSuccess specialised to Identity.

>>> preview _ExitSuccess' (mkExitSuccess' "abc" :: Exitcode' () String)
Just "abc"
>>> preview _ExitSuccess' (mkExitFailure1' () :: Exitcode' () String)
Nothing