diff options
Diffstat (limited to 'vendor/attoparsec-0.10.4.0/Data/Attoparsec/Internal.hs')
-rw-r--r-- | vendor/attoparsec-0.10.4.0/Data/Attoparsec/Internal.hs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/vendor/attoparsec-0.10.4.0/Data/Attoparsec/Internal.hs b/vendor/attoparsec-0.10.4.0/Data/Attoparsec/Internal.hs new file mode 100644 index 00000000..0572d682 --- /dev/null +++ b/vendor/attoparsec-0.10.4.0/Data/Attoparsec/Internal.hs @@ -0,0 +1,31 @@ +-- | +-- Module : Data.Attoparsec.Internal +-- Copyright : Bryan O'Sullivan 2012 +-- License : BSD3 +-- +-- Maintainer : bos@serpentine.com +-- Stability : experimental +-- Portability : unknown +-- +-- Simple, efficient parser combinators, loosely based on the Parsec +-- library. + +module Data.Attoparsec.Internal + ( + compareResults + ) where + +import Data.Attoparsec.Internal.Types (IResult(..)) + +-- | Compare two 'IResult' values for equality. +-- +-- If both 'IResult's are 'Partial', the result will be 'Nothing', as +-- they are incomplete and hence their equality cannot be known. +-- (This is why there is no 'Eq' instance for 'IResult'.) +compareResults :: (Eq t, Eq r) => IResult t r -> IResult t r -> Maybe Bool +compareResults (Fail i0 ctxs0 msg0) (Fail i1 ctxs1 msg1) = + Just (i0 == i1 && ctxs0 == ctxs1 && msg0 == msg1) +compareResults (Done i0 r0) (Done i1 r1) = + Just (i0 == i1 && r0 == r1) +compareResults (Partial _) (Partial _) = Nothing +compareResults _ _ = Just False |