on master help sign in
Refactored a couple more spots
dff73b0Melvar Chen
contribs/lib/SimpleParser/SimpleParser.idr+5−6
@@ -64,7 +64,9 @@ item = P (\inp => case unpack inp of
64--------------------------------------------------------------------------------
64--------------------------------------------------------------------------------
65
65
66sat : (Char -> Bool) -> Parser Char
66sat : (Char -> Bool) -> Parser Char
67−sat p = item >>= (\x => if p x then pure x else failure "failed")
67+sat p = do x <- item
68+ guard (p x)
69+ pure x
68
70
69oneof : List Char -> Parser Char
71oneof : List Char -> Parser Char
70oneof xs = sat (\x => elem x xs)
72oneof xs = sat (\x => elem x xs)
@@ -88,7 +90,7 @@ char : Char -> Parser Char
88char x = sat (== x)
90char x = sat (== x)
89
91
90string : String -> Parser String
92string : String -> Parser String
91−string s = [| pack (traverse char (unpack s)) |]
93+string s = fmap pack (traverse char (unpack s))
92
94
93many1 : Parser a -> Parser (List a)
95many1 : Parser a -> Parser (List a)
94many : Parser a -> Parser (List a)
96many : Parser a -> Parser (List a)
@@ -131,10 +133,7 @@ space = do many (sat isSpace)
131--------------------------------------------------------------------------------
133--------------------------------------------------------------------------------
132
134
133token : Parser a -> Parser a
135token : Parser a -> Parser a
134−token p = do space
136+token p = space $> p <$ space
135− v <- p
136− space
137− pure v
138
137
139identifier : Parser String
138identifier : Parser String
140identifier = token ident
139identifier = token ident