module Text.ParserCombinators.Poly.Result
( -- * The parsing result type
Result(..) -- A parsing result type, with Success, Failure, and Commitment.
, resultToEither
) where
-- | A return type like Either, that distinguishes not only between-- right and wrong answers, but also has commitment, so that a failure-- cannot be undone. This should only be used for writing very primitive-- parsers - really it is an internal detail of the library.-- The z type is the remaining unconsumed input.
data Resultza = Successza
| FailurezString
| Committed (Resultza)
instance Functor (Resultz) where
fmapf (Successza) = Successz (fa)
fmapf (Failureze) = Failurezefmapf (Committedr) = Committed (fmapfr)
-- | Convert a Result to an Either, paired with the remaining unconsumed input.resultToEither :: Resultza -> (EitherStringa, z)
resultToEither (Successza) = (Righta, z)
resultToEither (Failureze) = (Lefte, z)
resultToEither (Committedr) = resultToEitherr------------------------------------------------------------------------