@@ -69,7 +69,6 @@ import Control.Monad (when)
6969import Data.Attoparsec.Combinator
7070import Data.Attoparsec.FastSet (charClass, memberWord8)
7171import Data.Attoparsec.Internal.Types
72−import Data.Monoid (Monoid(..))
7372import Data.Word (Word8)
7473import Foreign.ForeignPtr (withForeignPtr)
7574import Foreign.Ptr (castPtr, minusPtr, plusPtr)
@@ -99,7 +98,7 @@ prompt :: Input -> Added -> More
9998prompt i0 a0 _m0 kf ks = Partial $ \s ->
10099 if B.null s
101100 then kf i0 a0 Complete
102− else ks (i0 `mappend` I s) (a0 `mappend` Added s) Incomplete
101+ else ks (I (unI i0 +++ s)) (A (unA a0 +++ s)) Incomplete
103102
104103-- | Immediately demand more input via a 'Partial' continuation
105104-- result.
@@ -141,19 +140,6 @@ try p = Parser $ \i0 a0 m0 kf ks ->
141140 noAdds i0 a0 m0 $ \i1 a1 m1 ->
142141 let kf' i2 a2 m2 = addS i0 a0 m0 i2 a2 m2 kf
143142 in runParser p i1 a1 m1 kf' ks
144− where noAdds i0 _a0 m0 f = f i0 mempty m0
145−
146−addS :: Input -> Added -> More
147− -> Input -> Added -> More
148− -> (Input -> Added -> More -> r) -> r
149−addS i0 a0 m0 _i1 a1 m1 f =
150− let !i = case a1 of
151− Dropped -> i0
152− Added s -> i0 `mappend` I s
153− !a = a0 `mappend` a1
154− !m = m0 `mappend` m1
155− in f i a m
156−{-# INLINE addS #-}
157143
158144-- | The parser @satisfy p@ succeeds for any byte for which the
159145-- predicate @p@ returns 'True'. Returns the byte that is actually
@@ -455,12 +441,12 @@ successK i0 _a0 _m0 a = Done (unI i0) a
455441
456442-- | Run a parser.
457443parse :: Parser a -> B.ByteString -> Result a
458−parse m s = runParser m (I s) mempty Incomplete failK successK
444+parse m s = runParser m (I s) (A B.empty) Incomplete failK successK
459445{-# INLINE parse #-}
460446
461447-- | Run a parser that cannot be resupplied via a 'Partial' result.
462448parseOnly :: Parser a -> B.ByteString -> Either String a
463−parseOnly m s = case runParser m (I s) mempty Complete failK successK of
449+parseOnly m s = case runParser m (I s) (A B.empty) Complete failK successK of
464450 Fail _ _ err -> Left err
465451 Done _ a -> Right a
466452 _ -> error "parseOnly: impossible error!"