module SimpleParser.Result
  ( ParseResult (..)
  , ParseValue (..)
  , parseSuccessResult
  , parseErrorResult
  , parseValue
  ) where

-- | Strict 'Either' for parse results.
data ParseValue e a =
    ParseError !e
  | ParseSuccess !a
  deriving (ParseValue e a -> ParseValue e a -> Bool
(ParseValue e a -> ParseValue e a -> Bool)
-> (ParseValue e a -> ParseValue e a -> Bool)
-> Eq (ParseValue e a)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall e a.
(Eq e, Eq a) =>
ParseValue e a -> ParseValue e a -> Bool
/= :: ParseValue e a -> ParseValue e a -> Bool
$c/= :: forall e a.
(Eq e, Eq a) =>
ParseValue e a -> ParseValue e a -> Bool
== :: ParseValue e a -> ParseValue e a -> Bool
$c== :: forall e a.
(Eq e, Eq a) =>
ParseValue e a -> ParseValue e a -> Bool
Eq, Int -> ParseValue e a -> ShowS
[ParseValue e a] -> ShowS
ParseValue e a -> String
(Int -> ParseValue e a -> ShowS)
-> (ParseValue e a -> String)
-> ([ParseValue e a] -> ShowS)
-> Show (ParseValue e a)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall e a. (Show e, Show a) => Int -> ParseValue e a -> ShowS
forall e a. (Show e, Show a) => [ParseValue e a] -> ShowS
forall e a. (Show e, Show a) => ParseValue e a -> String
showList :: [ParseValue e a] -> ShowS
$cshowList :: forall e a. (Show e, Show a) => [ParseValue e a] -> ShowS
show :: ParseValue e a -> String
$cshow :: forall e a. (Show e, Show a) => ParseValue e a -> String
showsPrec :: Int -> ParseValue e a -> ShowS
$cshowsPrec :: forall e a. (Show e, Show a) => Int -> ParseValue e a -> ShowS
Show, a -> ParseValue e b -> ParseValue e a
(a -> b) -> ParseValue e a -> ParseValue e b
(forall a b. (a -> b) -> ParseValue e a -> ParseValue e b)
-> (forall a b. a -> ParseValue e b -> ParseValue e a)
-> Functor (ParseValue e)
forall a b. a -> ParseValue e b -> ParseValue e a
forall a b. (a -> b) -> ParseValue e a -> ParseValue e b
forall e a b. a -> ParseValue e b -> ParseValue e a
forall e a b. (a -> b) -> ParseValue e a -> ParseValue e b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: a -> ParseValue e b -> ParseValue e a
$c<$ :: forall e a b. a -> ParseValue e b -> ParseValue e a
fmap :: (a -> b) -> ParseValue e a -> ParseValue e b
$cfmap :: forall e a b. (a -> b) -> ParseValue e a -> ParseValue e b
Functor, ParseValue e a -> Bool
(a -> m) -> ParseValue e a -> m
(a -> b -> b) -> b -> ParseValue e a -> b
(forall m. Monoid m => ParseValue e m -> m)
-> (forall m a. Monoid m => (a -> m) -> ParseValue e a -> m)
-> (forall m a. Monoid m => (a -> m) -> ParseValue e a -> m)
-> (forall a b. (a -> b -> b) -> b -> ParseValue e a -> b)
-> (forall a b. (a -> b -> b) -> b -> ParseValue e a -> b)
-> (forall b a. (b -> a -> b) -> b -> ParseValue e a -> b)
-> (forall b a. (b -> a -> b) -> b -> ParseValue e a -> b)
-> (forall a. (a -> a -> a) -> ParseValue e a -> a)
-> (forall a. (a -> a -> a) -> ParseValue e a -> a)
-> (forall a. ParseValue e a -> [a])
-> (forall a. ParseValue e a -> Bool)
-> (forall a. ParseValue e a -> Int)
-> (forall a. Eq a => a -> ParseValue e a -> Bool)
-> (forall a. Ord a => ParseValue e a -> a)
-> (forall a. Ord a => ParseValue e a -> a)
-> (forall a. Num a => ParseValue e a -> a)
-> (forall a. Num a => ParseValue e a -> a)
-> Foldable (ParseValue e)
forall a. Eq a => a -> ParseValue e a -> Bool
forall a. Num a => ParseValue e a -> a
forall a. Ord a => ParseValue e a -> a
forall m. Monoid m => ParseValue e m -> m
forall a. ParseValue e a -> Bool
forall a. ParseValue e a -> Int
forall a. ParseValue e a -> [a]
forall a. (a -> a -> a) -> ParseValue e a -> a
forall e a. Eq a => a -> ParseValue e a -> Bool
forall e a. Num a => ParseValue e a -> a
forall e a. Ord a => ParseValue e a -> a
forall m a. Monoid m => (a -> m) -> ParseValue e a -> m
forall e m. Monoid m => ParseValue e m -> m
forall e a. ParseValue e a -> Bool
forall e a. ParseValue e a -> Int
forall e a. ParseValue e a -> [a]
forall b a. (b -> a -> b) -> b -> ParseValue e a -> b
forall a b. (a -> b -> b) -> b -> ParseValue e a -> b
forall e a. (a -> a -> a) -> ParseValue e a -> a
forall e m a. Monoid m => (a -> m) -> ParseValue e a -> m
forall e b a. (b -> a -> b) -> b -> ParseValue e a -> b
forall e a b. (a -> b -> b) -> b -> ParseValue e a -> b
forall (t :: * -> *).
(forall m. Monoid m => t m -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. t a -> [a])
-> (forall a. t a -> Bool)
-> (forall a. t a -> Int)
-> (forall a. Eq a => a -> t a -> Bool)
-> (forall a. Ord a => t a -> a)
-> (forall a. Ord a => t a -> a)
-> (forall a. Num a => t a -> a)
-> (forall a. Num a => t a -> a)
-> Foldable t
product :: ParseValue e a -> a
$cproduct :: forall e a. Num a => ParseValue e a -> a
sum :: ParseValue e a -> a
$csum :: forall e a. Num a => ParseValue e a -> a
minimum :: ParseValue e a -> a
$cminimum :: forall e a. Ord a => ParseValue e a -> a
maximum :: ParseValue e a -> a
$cmaximum :: forall e a. Ord a => ParseValue e a -> a
elem :: a -> ParseValue e a -> Bool
$celem :: forall e a. Eq a => a -> ParseValue e a -> Bool
length :: ParseValue e a -> Int
$clength :: forall e a. ParseValue e a -> Int
null :: ParseValue e a -> Bool
$cnull :: forall e a. ParseValue e a -> Bool
toList :: ParseValue e a -> [a]
$ctoList :: forall e a. ParseValue e a -> [a]
foldl1 :: (a -> a -> a) -> ParseValue e a -> a
$cfoldl1 :: forall e a. (a -> a -> a) -> ParseValue e a -> a
foldr1 :: (a -> a -> a) -> ParseValue e a -> a
$cfoldr1 :: forall e a. (a -> a -> a) -> ParseValue e a -> a
foldl' :: (b -> a -> b) -> b -> ParseValue e a -> b
$cfoldl' :: forall e b a. (b -> a -> b) -> b -> ParseValue e a -> b
foldl :: (b -> a -> b) -> b -> ParseValue e a -> b
$cfoldl :: forall e b a. (b -> a -> b) -> b -> ParseValue e a -> b
foldr' :: (a -> b -> b) -> b -> ParseValue e a -> b
$cfoldr' :: forall e a b. (a -> b -> b) -> b -> ParseValue e a -> b
foldr :: (a -> b -> b) -> b -> ParseValue e a -> b
$cfoldr :: forall e a b. (a -> b -> b) -> b -> ParseValue e a -> b
foldMap' :: (a -> m) -> ParseValue e a -> m
$cfoldMap' :: forall e m a. Monoid m => (a -> m) -> ParseValue e a -> m
foldMap :: (a -> m) -> ParseValue e a -> m
$cfoldMap :: forall e m a. Monoid m => (a -> m) -> ParseValue e a -> m
fold :: ParseValue e m -> m
$cfold :: forall e m. Monoid m => ParseValue e m -> m
Foldable, Functor (ParseValue e)
Foldable (ParseValue e)
Functor (ParseValue e)
-> Foldable (ParseValue e)
-> (forall (f :: * -> *) a b.
    Applicative f =>
    (a -> f b) -> ParseValue e a -> f (ParseValue e b))
-> (forall (f :: * -> *) a.
    Applicative f =>
    ParseValue e (f a) -> f (ParseValue e a))
-> (forall (m :: * -> *) a b.
    Monad m =>
    (a -> m b) -> ParseValue e a -> m (ParseValue e b))
-> (forall (m :: * -> *) a.
    Monad m =>
    ParseValue e (m a) -> m (ParseValue e a))
-> Traversable (ParseValue e)
(a -> f b) -> ParseValue e a -> f (ParseValue e b)
forall e. Functor (ParseValue e)
forall e. Foldable (ParseValue e)
forall e (m :: * -> *) a.
Monad m =>
ParseValue e (m a) -> m (ParseValue e a)
forall e (f :: * -> *) a.
Applicative f =>
ParseValue e (f a) -> f (ParseValue e a)
forall e (m :: * -> *) a b.
Monad m =>
(a -> m b) -> ParseValue e a -> m (ParseValue e b)
forall e (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> ParseValue e a -> f (ParseValue e b)
forall (t :: * -> *).
Functor t
-> Foldable t
-> (forall (f :: * -> *) a b.
    Applicative f =>
    (a -> f b) -> t a -> f (t b))
-> (forall (f :: * -> *) a. Applicative f => t (f a) -> f (t a))
-> (forall (m :: * -> *) a b.
    Monad m =>
    (a -> m b) -> t a -> m (t b))
-> (forall (m :: * -> *) a. Monad m => t (m a) -> m (t a))
-> Traversable t
forall (m :: * -> *) a.
Monad m =>
ParseValue e (m a) -> m (ParseValue e a)
forall (f :: * -> *) a.
Applicative f =>
ParseValue e (f a) -> f (ParseValue e a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> ParseValue e a -> m (ParseValue e b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> ParseValue e a -> f (ParseValue e b)
sequence :: ParseValue e (m a) -> m (ParseValue e a)
$csequence :: forall e (m :: * -> *) a.
Monad m =>
ParseValue e (m a) -> m (ParseValue e a)
mapM :: (a -> m b) -> ParseValue e a -> m (ParseValue e b)
$cmapM :: forall e (m :: * -> *) a b.
Monad m =>
(a -> m b) -> ParseValue e a -> m (ParseValue e b)
sequenceA :: ParseValue e (f a) -> f (ParseValue e a)
$csequenceA :: forall e (f :: * -> *) a.
Applicative f =>
ParseValue e (f a) -> f (ParseValue e a)
traverse :: (a -> f b) -> ParseValue e a -> f (ParseValue e b)
$ctraverse :: forall e (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> ParseValue e a -> f (ParseValue e b)
$cp2Traversable :: forall e. Foldable (ParseValue e)
$cp1Traversable :: forall e. Functor (ParseValue e)
Traversable)

parseValue :: (e -> r) -> (a -> r) -> ParseValue e a -> r
parseValue :: (e -> r) -> (a -> r) -> ParseValue e a -> r
parseValue e -> r
onError a -> r
onSuccess ParseValue e a
value =
  case ParseValue e a
value of
    ParseError e
e -> e -> r
onError e
e
    ParseSuccess a
a -> a -> r
onSuccess a
a

-- | Strict pair of parse result and state at the time it was yielded.
data ParseResult e s a = ParseResult
  { ParseResult e s a -> ParseValue e a
prValue :: !(ParseValue e a)
  , ParseResult e s a -> s
prState :: !s
  } deriving (ParseResult e s a -> ParseResult e s a -> Bool
(ParseResult e s a -> ParseResult e s a -> Bool)
-> (ParseResult e s a -> ParseResult e s a -> Bool)
-> Eq (ParseResult e s a)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall e s a.
(Eq e, Eq a, Eq s) =>
ParseResult e s a -> ParseResult e s a -> Bool
/= :: ParseResult e s a -> ParseResult e s a -> Bool
$c/= :: forall e s a.
(Eq e, Eq a, Eq s) =>
ParseResult e s a -> ParseResult e s a -> Bool
== :: ParseResult e s a -> ParseResult e s a -> Bool
$c== :: forall e s a.
(Eq e, Eq a, Eq s) =>
ParseResult e s a -> ParseResult e s a -> Bool
Eq, Int -> ParseResult e s a -> ShowS
[ParseResult e s a] -> ShowS
ParseResult e s a -> String
(Int -> ParseResult e s a -> ShowS)
-> (ParseResult e s a -> String)
-> ([ParseResult e s a] -> ShowS)
-> Show (ParseResult e s a)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall e s a.
(Show e, Show a, Show s) =>
Int -> ParseResult e s a -> ShowS
forall e s a.
(Show e, Show a, Show s) =>
[ParseResult e s a] -> ShowS
forall e s a.
(Show e, Show a, Show s) =>
ParseResult e s a -> String
showList :: [ParseResult e s a] -> ShowS
$cshowList :: forall e s a.
(Show e, Show a, Show s) =>
[ParseResult e s a] -> ShowS
show :: ParseResult e s a -> String
$cshow :: forall e s a.
(Show e, Show a, Show s) =>
ParseResult e s a -> String
showsPrec :: Int -> ParseResult e s a -> ShowS
$cshowsPrec :: forall e s a.
(Show e, Show a, Show s) =>
Int -> ParseResult e s a -> ShowS
Show, a -> ParseResult e s b -> ParseResult e s a
(a -> b) -> ParseResult e s a -> ParseResult e s b
(forall a b. (a -> b) -> ParseResult e s a -> ParseResult e s b)
-> (forall a b. a -> ParseResult e s b -> ParseResult e s a)
-> Functor (ParseResult e s)
forall a b. a -> ParseResult e s b -> ParseResult e s a
forall a b. (a -> b) -> ParseResult e s a -> ParseResult e s b
forall e s a b. a -> ParseResult e s b -> ParseResult e s a
forall e s a b. (a -> b) -> ParseResult e s a -> ParseResult e s b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: a -> ParseResult e s b -> ParseResult e s a
$c<$ :: forall e s a b. a -> ParseResult e s b -> ParseResult e s a
fmap :: (a -> b) -> ParseResult e s a -> ParseResult e s b
$cfmap :: forall e s a b. (a -> b) -> ParseResult e s a -> ParseResult e s b
Functor, ParseResult e s a -> Bool
(a -> m) -> ParseResult e s a -> m
(a -> b -> b) -> b -> ParseResult e s a -> b
(forall m. Monoid m => ParseResult e s m -> m)
-> (forall m a. Monoid m => (a -> m) -> ParseResult e s a -> m)
-> (forall m a. Monoid m => (a -> m) -> ParseResult e s a -> m)
-> (forall a b. (a -> b -> b) -> b -> ParseResult e s a -> b)
-> (forall a b. (a -> b -> b) -> b -> ParseResult e s a -> b)
-> (forall b a. (b -> a -> b) -> b -> ParseResult e s a -> b)
-> (forall b a. (b -> a -> b) -> b -> ParseResult e s a -> b)
-> (forall a. (a -> a -> a) -> ParseResult e s a -> a)
-> (forall a. (a -> a -> a) -> ParseResult e s a -> a)
-> (forall a. ParseResult e s a -> [a])
-> (forall a. ParseResult e s a -> Bool)
-> (forall a. ParseResult e s a -> Int)
-> (forall a. Eq a => a -> ParseResult e s a -> Bool)
-> (forall a. Ord a => ParseResult e s a -> a)
-> (forall a. Ord a => ParseResult e s a -> a)
-> (forall a. Num a => ParseResult e s a -> a)
-> (forall a. Num a => ParseResult e s a -> a)
-> Foldable (ParseResult e s)
forall a. Eq a => a -> ParseResult e s a -> Bool
forall a. Num a => ParseResult e s a -> a
forall a. Ord a => ParseResult e s a -> a
forall m. Monoid m => ParseResult e s m -> m
forall a. ParseResult e s a -> Bool
forall a. ParseResult e s a -> Int
forall a. ParseResult e s a -> [a]
forall a. (a -> a -> a) -> ParseResult e s a -> a
forall m a. Monoid m => (a -> m) -> ParseResult e s a -> m
forall b a. (b -> a -> b) -> b -> ParseResult e s a -> b
forall a b. (a -> b -> b) -> b -> ParseResult e s a -> b
forall e s a. Eq a => a -> ParseResult e s a -> Bool
forall e s a. Num a => ParseResult e s a -> a
forall e s a. Ord a => ParseResult e s a -> a
forall e s m. Monoid m => ParseResult e s m -> m
forall e s a. ParseResult e s a -> Bool
forall e s a. ParseResult e s a -> Int
forall e s a. ParseResult e s a -> [a]
forall e s a. (a -> a -> a) -> ParseResult e s a -> a
forall e s m a. Monoid m => (a -> m) -> ParseResult e s a -> m
forall e s b a. (b -> a -> b) -> b -> ParseResult e s a -> b
forall e s a b. (a -> b -> b) -> b -> ParseResult e s a -> b
forall (t :: * -> *).
(forall m. Monoid m => t m -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. t a -> [a])
-> (forall a. t a -> Bool)
-> (forall a. t a -> Int)
-> (forall a. Eq a => a -> t a -> Bool)
-> (forall a. Ord a => t a -> a)
-> (forall a. Ord a => t a -> a)
-> (forall a. Num a => t a -> a)
-> (forall a. Num a => t a -> a)
-> Foldable t
product :: ParseResult e s a -> a
$cproduct :: forall e s a. Num a => ParseResult e s a -> a
sum :: ParseResult e s a -> a
$csum :: forall e s a. Num a => ParseResult e s a -> a
minimum :: ParseResult e s a -> a
$cminimum :: forall e s a. Ord a => ParseResult e s a -> a
maximum :: ParseResult e s a -> a
$cmaximum :: forall e s a. Ord a => ParseResult e s a -> a
elem :: a -> ParseResult e s a -> Bool
$celem :: forall e s a. Eq a => a -> ParseResult e s a -> Bool
length :: ParseResult e s a -> Int
$clength :: forall e s a. ParseResult e s a -> Int
null :: ParseResult e s a -> Bool
$cnull :: forall e s a. ParseResult e s a -> Bool
toList :: ParseResult e s a -> [a]
$ctoList :: forall e s a. ParseResult e s a -> [a]
foldl1 :: (a -> a -> a) -> ParseResult e s a -> a
$cfoldl1 :: forall e s a. (a -> a -> a) -> ParseResult e s a -> a
foldr1 :: (a -> a -> a) -> ParseResult e s a -> a
$cfoldr1 :: forall e s a. (a -> a -> a) -> ParseResult e s a -> a
foldl' :: (b -> a -> b) -> b -> ParseResult e s a -> b
$cfoldl' :: forall e s b a. (b -> a -> b) -> b -> ParseResult e s a -> b
foldl :: (b -> a -> b) -> b -> ParseResult e s a -> b
$cfoldl :: forall e s b a. (b -> a -> b) -> b -> ParseResult e s a -> b
foldr' :: (a -> b -> b) -> b -> ParseResult e s a -> b
$cfoldr' :: forall e s a b. (a -> b -> b) -> b -> ParseResult e s a -> b
foldr :: (a -> b -> b) -> b -> ParseResult e s a -> b
$cfoldr :: forall e s a b. (a -> b -> b) -> b -> ParseResult e s a -> b
foldMap' :: (a -> m) -> ParseResult e s a -> m
$cfoldMap' :: forall e s m a. Monoid m => (a -> m) -> ParseResult e s a -> m
foldMap :: (a -> m) -> ParseResult e s a -> m
$cfoldMap :: forall e s m a. Monoid m => (a -> m) -> ParseResult e s a -> m
fold :: ParseResult e s m -> m
$cfold :: forall e s m. Monoid m => ParseResult e s m -> m
Foldable, Functor (ParseResult e s)
Foldable (ParseResult e s)
Functor (ParseResult e s)
-> Foldable (ParseResult e s)
-> (forall (f :: * -> *) a b.
    Applicative f =>
    (a -> f b) -> ParseResult e s a -> f (ParseResult e s b))
-> (forall (f :: * -> *) a.
    Applicative f =>
    ParseResult e s (f a) -> f (ParseResult e s a))
-> (forall (m :: * -> *) a b.
    Monad m =>
    (a -> m b) -> ParseResult e s a -> m (ParseResult e s b))
-> (forall (m :: * -> *) a.
    Monad m =>
    ParseResult e s (m a) -> m (ParseResult e s a))
-> Traversable (ParseResult e s)
(a -> f b) -> ParseResult e s a -> f (ParseResult e s b)
forall e s. Functor (ParseResult e s)
forall e s. Foldable (ParseResult e s)
forall e s (m :: * -> *) a.
Monad m =>
ParseResult e s (m a) -> m (ParseResult e s a)
forall e s (f :: * -> *) a.
Applicative f =>
ParseResult e s (f a) -> f (ParseResult e s a)
forall e s (m :: * -> *) a b.
Monad m =>
(a -> m b) -> ParseResult e s a -> m (ParseResult e s b)
forall e s (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> ParseResult e s a -> f (ParseResult e s b)
forall (t :: * -> *).
Functor t
-> Foldable t
-> (forall (f :: * -> *) a b.
    Applicative f =>
    (a -> f b) -> t a -> f (t b))
-> (forall (f :: * -> *) a. Applicative f => t (f a) -> f (t a))
-> (forall (m :: * -> *) a b.
    Monad m =>
    (a -> m b) -> t a -> m (t b))
-> (forall (m :: * -> *) a. Monad m => t (m a) -> m (t a))
-> Traversable t
forall (m :: * -> *) a.
Monad m =>
ParseResult e s (m a) -> m (ParseResult e s a)
forall (f :: * -> *) a.
Applicative f =>
ParseResult e s (f a) -> f (ParseResult e s a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> ParseResult e s a -> m (ParseResult e s b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> ParseResult e s a -> f (ParseResult e s b)
sequence :: ParseResult e s (m a) -> m (ParseResult e s a)
$csequence :: forall e s (m :: * -> *) a.
Monad m =>
ParseResult e s (m a) -> m (ParseResult e s a)
mapM :: (a -> m b) -> ParseResult e s a -> m (ParseResult e s b)
$cmapM :: forall e s (m :: * -> *) a b.
Monad m =>
(a -> m b) -> ParseResult e s a -> m (ParseResult e s b)
sequenceA :: ParseResult e s (f a) -> f (ParseResult e s a)
$csequenceA :: forall e s (f :: * -> *) a.
Applicative f =>
ParseResult e s (f a) -> f (ParseResult e s a)
traverse :: (a -> f b) -> ParseResult e s a -> f (ParseResult e s b)
$ctraverse :: forall e s (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> ParseResult e s a -> f (ParseResult e s b)
$cp2Traversable :: forall e s. Foldable (ParseResult e s)
$cp1Traversable :: forall e s. Functor (ParseResult e s)
Traversable)

parseSuccessResult :: a -> s -> ParseResult e s a
parseSuccessResult :: a -> s -> ParseResult e s a
parseSuccessResult = ParseValue e a -> s -> ParseResult e s a
forall e s a. ParseValue e a -> s -> ParseResult e s a
ParseResult (ParseValue e a -> s -> ParseResult e s a)
-> (a -> ParseValue e a) -> a -> s -> ParseResult e s a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> ParseValue e a
forall e a. a -> ParseValue e a
ParseSuccess

parseErrorResult :: e -> s -> ParseResult e s a
parseErrorResult :: e -> s -> ParseResult e s a
parseErrorResult = ParseValue e a -> s -> ParseResult e s a
forall e s a. ParseValue e a -> s -> ParseResult e s a
ParseResult (ParseValue e a -> s -> ParseResult e s a)
-> (e -> ParseValue e a) -> e -> s -> ParseResult e s a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. e -> ParseValue e a
forall e a. e -> ParseValue e a
ParseError