@@ -54,9 +54,9 @@ failure : String -> Parser a
54failure msg = P (\inp => Left msg)
54failure msg = P (\inp => Left msg)
56item : Parser Char
56item : Parser Char
57−item = P (\inp => case unpack inp of
57+item = P (\inp => case choose (inp == "") of
58− [] => Left "Error! Parsing empty list."
58+ Left _ => Left "Error! Parsing empty list."
59− (x::xs) => Right (x, pack xs))
59+ Right p => Right (strHead' inp p, strTail' inp p))
62--------------------------------------------------------------------------------
62--------------------------------------------------------------------------------
@@ -92,12 +92,12 @@ char x = sat (== x)
92string : String -> Parser String
92string : String -> Parser String
93string s = map pack (traverse char (unpack s))
93string s = map pack (traverse char (unpack s))
95−many1 : Parser a -> Parser (List a)
96+ many1 : Parser a -> Parser (List a)
96−many : Parser a -> Parser (List a)
97+ many1 p = [| p :: many p |]
98−many1 p = [| p :: many p |]
99+ many : Parser a -> Parser (List a)
100−many p = lazy (many1 p) <|> pure []
100+ many p = lazy (many1 p) <|> pure []
102bool : Parser Bool
102bool : Parser Bool
103bool = parseTrue <|> parseFalse
103bool = parseTrue <|> parseFalse