X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FParser.hs;h=5671ec0ccdf8c1c505a9bdf20cd227d8b1e07ec0;hp=f2e4be337abdc375503ec4761385a2222a6fbedb;hb=078fc2851ceae061fe368f2bc09fcd16d67ae00f;hpb=ba87ca171f0a058f501655ffa6f6e845f2f800a6 diff --git a/Network/HTTP/Lucu/Parser.hs b/Network/HTTP/Lucu/Parser.hs index f2e4be3..5671ec0 100644 --- a/Network/HTTP/Lucu/Parser.hs +++ b/Network/HTTP/Lucu/Parser.hs @@ -95,18 +95,18 @@ failP = fail undefined -- |@'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