X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FParser.hs;h=c40cacd0d4c17521817c7e3e8d2fb6c79394731d;hb=0dc3d31312a12f2b085242841b29eb0d96e9c4ac;hp=f2e4be337abdc375503ec4761385a2222a6fbedb;hpb=ba87ca171f0a058f501655ffa6f6e845f2f800a6;p=Lucu.git diff --git a/Network/HTTP/Lucu/Parser.hs b/Network/HTTP/Lucu/Parser.hs index f2e4be3..c40cacd 100644 --- a/Network/HTTP/Lucu/Parser.hs +++ b/Network/HTTP/Lucu/Parser.hs @@ -93,20 +93,20 @@ instance Monad Parser where failP :: Parser a failP = fail undefined --- |@'parse' p bstr@ parses @bstr@ with @p@ and returns @(result, --- remaining)@. -parse :: Parser a -> LazyByteString -> (ParserResult a, LazyByteString) +-- |@'parse' p bstr@ parses @bstr@ with @p@ and returns @(# result, +-- remaining #)@. +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