-- |@'parse' p bstr@ parses @bstr@ with @p@ and returns @(result,
-- remaining)@.
-parse :: Parser a -> LazyByteString -> (ParserResult a, LazyByteString)
+parse :: Parser a -> LazyByteString -> (# ParserResult a, LazyByteString #)
parse p input -- input は lazy である必要有り。
= p `seq`
let (result, state') = runState (runParser p) (PST input True)
in
- result `seq` (result, pstInput state') -- pstInput state' も lazy である必要有り。
+ result `seq` (# result, pstInput state' #) -- pstInput state' も lazy である必要有り。
-- |@'parseStr' p str@ packs @str@ and parses it.
-parseStr :: Parser a -> String -> (ParserResult a, LazyByteString)
+parseStr :: Parser a -> String -> (# ParserResult a, LazyByteString #)
parseStr p input
= p `seq` -- input は lazy である必要有り。
- parse p $! B.pack input
+ parse p (B.pack input)
anyChar :: Parser Char