git.iko.soy/typeable/attoparsec
on master help sign in
Drop some internal Monoid instances that add no value.
bf5640eBryan O'Sullivan
Data/Attoparsec/Internal.hs+9−19
@@ -94,16 +94,6 @@ type Success a r = S -> a -> Result r
94data More = Complete | Incomplete
94data More = Complete | Incomplete
95 deriving (Eq, Show)
95 deriving (Eq, Show)
96
96
97−plusMore :: More -> More -> More
98−plusMore Complete _ = Complete
99−plusMore _ Complete = Complete
100−plusMore _ _ = Incomplete
101−{-# INLINE plusMore #-}
102−
103−instance Monoid More where
104− mempty = Incomplete
105− mappend = plusMore
106−
107data S = S {
97data S = S {
108 input :: !B.ByteString
98 input :: !B.ByteString
109 , _added :: B.ByteString
99 , _added :: B.ByteString
@@ -116,13 +106,13 @@ instance Show r => Show (Result r) where
116 show (Done bs r) = "Done " ++ show bs ++ " " ++ show r
106 show (Done bs r) = "Done " ++ show bs ++ " " ++ show r
117
107
118addS :: S -> S -> S
108addS :: S -> S -> S
119−addS (S s0 a0 c0) (S _s1 a1 c1) = S (s0 +++ a1) (a0 +++ a1) (mappend c0 c1)
109+addS (S s0 a0 c0) (S _s1 a1 c1) = S (s0 +++ a1) (a0 +++ a1) (c0 <> c1)
110+ where
111+ Complete <> _ = Complete
112+ _ <> Complete = Complete
113+ _ <> _ = Incomplete
120{-# INLINE addS #-}
114{-# INLINE addS #-}
121
115
122−instance Monoid S where
123− mempty = S B.empty B.empty Incomplete
124− mappend = addS
125−
126bindP :: Parser a -> (a -> Parser b) -> Parser b
116bindP :: Parser a -> (a -> Parser b) -> Parser b
127bindP m g =
117bindP m g =
128 Parser (\st0 kf ks -> runParser m st0 kf (\s a -> runParser (g a) s kf ks))
118 Parser (\st0 kf ks -> runParser m st0 kf (\s a -> runParser (g a) s kf ks))
@@ -143,7 +133,7 @@ noAdds (S s0 _a0 c0) = S s0 B.empty c0
143
133
144plus :: Parser a -> Parser a -> Parser a
134plus :: Parser a -> Parser a -> Parser a
145plus a b = Parser $ \st0 kf ks ->
135plus a b = Parser $ \st0 kf ks ->
146− let kf' st1 _ _ = runParser b (mappend st0 st1) kf ks
136+ let kf' st1 _ _ = runParser b (addS st0 st1) kf ks
147 !st2 = noAdds st0
137 !st2 = noAdds st0
148 in runParser a st2 kf' ks
138 in runParser a st2 kf' ks
149{-# INLINE plus #-}
139{-# INLINE plus #-}
@@ -244,7 +234,7 @@ put s = Parser (\(S _s0 a0 c0) _kf ks -> ks (S s a0 c0) ())
244-- retain input for longer than is desirable.
234-- retain input for longer than is desirable.
245try :: Parser a -> Parser a
235try :: Parser a -> Parser a
246try p = Parser $ \st0 kf ks ->
236try p = Parser $ \st0 kf ks ->
247− runParser p (noAdds st0) (kf . mappend st0) ks
237+ runParser p (noAdds st0) (kf . addS st0) ks
248
238
249-- | The parser @satisfy p@ succeeds for any byte for which the
239-- | The parser @satisfy p@ succeeds for any byte for which the
250-- predicate @p@ returns 'True'. Returns the byte that is actually
240-- predicate @p@ returns 'True'. Returns the byte that is actually
@@ -475,8 +465,8 @@ endOfInput = Parser $ \st0@S{..} kf ks ->
475 if B.null input
465 if B.null input
476 then if more == Complete
466 then if more == Complete
477 then ks st0 ()
467 then ks st0 ()
478− else let kf' st1 _ _ = ks (mappend st0 st1) ()
468+ else let kf' st1 _ _ = ks (addS st0 st1) ()
479− ks' st1 _ = kf (mappend st0 st1) [] "endOfInput"
469+ ks' st1 _ = kf (addS st0 st1) [] "endOfInput"
480 in runParser demandInput st0 kf' ks'
470 in runParser demandInput st0 kf' ks'
481 else kf st0 [] "endOfInput"
471 else kf st0 [] "endOfInput"
482
472