From 1e9b0fba91db359f6c49bf51ff36ef79c0316724 Mon Sep 17 00:00:00 2001 From: Sebastian Graf Date: Sat, 25 Apr 2015 10:41:58 +0200 Subject: [PATCH 1/2] Added `Alternative` constraint to inline code --- 002_parsers.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/002_parsers.md b/002_parsers.md index 5534f12..2e878b6 100644 --- a/002_parsers.md +++ b/002_parsers.md @@ -105,14 +105,14 @@ itself if there is not at least a single match. ```haskell -- | One or more. -some :: f a -> f [a] +some :: Alternative f => f a -> f [a] some v = some_v where many_v = some_v <|> pure [] some_v = (:) <$> v <*> many_v -- | Zero or more. -many :: f a -> f [a] +many :: Alternative f => f a -> f [a] many v = many_v where many_v = some_v <|> pure [] From d86a804a2956828366cb012290a535021584ae30 Mon Sep 17 00:00:00 2001 From: Sebastian Graf Date: Sat, 25 Apr 2015 10:46:54 +0200 Subject: [PATCH 2/2] DRY + nitpicking --- chapter3/parsec.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/chapter3/parsec.hs b/chapter3/parsec.hs index 5d2cbfe..958629e 100644 --- a/chapter3/parsec.hs +++ b/chapter3/parsec.hs @@ -12,7 +12,7 @@ runParser :: Parser a -> String -> a runParser m s = case parse m s of [(res, [])] -> res - [(_, rs)] -> error "Parser did not consume entire stream." + [(_, _)] -> error "Parser did not consume entire stream." _ -> error "Parser error." item :: Parser Char @@ -62,7 +62,7 @@ satisfy :: (Char -> Bool) -> Parser Char satisfy p = item `bind` \c -> if p c then unit c - else (Parser (\cs -> [])) + else failure ------------------------------------------------------------------------------- -- Combinators