X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FParser.hs;h=c43dfa7616d758bd2d5776c803cc435a56f0fd22;hp=ffbf6d13ff67f2c834529a850dc684bebe74af1a;hb=b340a77fa7bd051dd13a41d0a5b1ad30220bc6b6;hpb=62f7c13cae3dd68e639b279a3c9a9a742a559927 diff --git a/Network/HTTP/Lucu/Parser.hs b/Network/HTTP/Lucu/Parser.hs index ffbf6d1..c43dfa7 100644 --- a/Network/HTTP/Lucu/Parser.hs +++ b/Network/HTTP/Lucu/Parser.hs @@ -20,6 +20,7 @@ module Network.HTTP.Lucu.Parser , many1 -- Parser a -> Parser [a] , manyTill -- Parser a -> Parser end -> Parser [a] , many1Till -- Parser a -> Parser end -> Parser [a] + , count -- Int -> Parser a -> Parser [a] , option -- a -> Parser a -> Parser a , sepBy -- Parser a -> Parser sep -> Parser [a] , sepBy1 -- Parser a -> Parser sep -> Parser [a] @@ -190,6 +191,13 @@ many1Till p end = many1 $ do x <- p return x +count :: Int -> Parser a -> Parser [a] +count 0 _ = return [] +count n p = do x <- p + xs <- count (n-1) p + return (x:xs) + + option :: a -> Parser a -> Parser a option def p = p <|> return def