module Fallible where import Control.Monad.Fail (MonadFail (fail)) import Prelude hiding (fail) newtype Fallible a = Fallible (Either String a) deriving newtype (forall a b. a -> Fallible b -> Fallible a forall a b. (a -> b) -> Fallible a -> Fallible b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f <$ :: forall a b. a -> Fallible b -> Fallible a $c<$ :: forall a b. a -> Fallible b -> Fallible a fmap :: forall a b. (a -> b) -> Fallible a -> Fallible b $cfmap :: forall a b. (a -> b) -> Fallible a -> Fallible b Functor, Functor Fallible forall a. a -> Fallible a forall a b. Fallible a -> Fallible b -> Fallible a forall a b. Fallible a -> Fallible b -> Fallible b forall a b. Fallible (a -> b) -> Fallible a -> Fallible b forall a b c. (a -> b -> c) -> Fallible a -> Fallible b -> Fallible c forall (f :: * -> *). Functor f -> (forall a. a -> f a) -> (forall a b. f (a -> b) -> f a -> f b) -> (forall a b c. (a -> b -> c) -> f a -> f b -> f c) -> (forall a b. f a -> f b -> f b) -> (forall a b. f a -> f b -> f a) -> Applicative f <* :: forall a b. Fallible a -> Fallible b -> Fallible a $c<* :: forall a b. Fallible a -> Fallible b -> Fallible a *> :: forall a b. Fallible a -> Fallible b -> Fallible b $c*> :: forall a b. Fallible a -> Fallible b -> Fallible b liftA2 :: forall a b c. (a -> b -> c) -> Fallible a -> Fallible b -> Fallible c $cliftA2 :: forall a b c. (a -> b -> c) -> Fallible a -> Fallible b -> Fallible c <*> :: forall a b. Fallible (a -> b) -> Fallible a -> Fallible b $c<*> :: forall a b. Fallible (a -> b) -> Fallible a -> Fallible b pure :: forall a. a -> Fallible a $cpure :: forall a. a -> Fallible a Applicative, Applicative Fallible forall a. a -> Fallible a forall a b. Fallible a -> Fallible b -> Fallible b forall a b. Fallible a -> (a -> Fallible b) -> Fallible b forall (m :: * -> *). Applicative m -> (forall a b. m a -> (a -> m b) -> m b) -> (forall a b. m a -> m b -> m b) -> (forall a. a -> m a) -> Monad m return :: forall a. a -> Fallible a $creturn :: forall a. a -> Fallible a >> :: forall a b. Fallible a -> Fallible b -> Fallible b $c>> :: forall a b. Fallible a -> Fallible b -> Fallible b >>= :: forall a b. Fallible a -> (a -> Fallible b) -> Fallible b $c>>= :: forall a b. Fallible a -> (a -> Fallible b) -> Fallible b Monad, Fallible a -> Fallible a -> Bool forall a. Eq a => Fallible a -> Fallible a -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Fallible a -> Fallible a -> Bool $c/= :: forall a. Eq a => Fallible a -> Fallible a -> Bool == :: Fallible a -> Fallible a -> Bool $c== :: forall a. Eq a => Fallible a -> Fallible a -> Bool Eq, Int -> Fallible a -> ShowS [Fallible a] -> ShowS Fallible a -> String forall a. Show a => Int -> Fallible a -> ShowS forall a. Show a => [Fallible a] -> ShowS forall a. Show a => Fallible a -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Fallible a] -> ShowS $cshowList :: forall a. Show a => [Fallible a] -> ShowS show :: Fallible a -> String $cshow :: forall a. Show a => Fallible a -> String showsPrec :: Int -> Fallible a -> ShowS $cshowsPrec :: forall a. Show a => Int -> Fallible a -> ShowS Show) instance MonadFail Fallible where fail :: forall a. String -> Fallible a fail = forall a. Either String a -> Fallible a Fallible forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. a -> Either a b Left