Improved parse sep list
authorpimjager <pim@pimjager.nl>
Thu, 23 Jun 2016 09:57:36 +0000 (11:57 +0200)
committerpimjager <pim@pimjager.nl>
Thu, 23 Jun 2016 09:57:36 +0000 (11:57 +0200)
parse.icl

index 2dd8f1a..a6374c1 100644 (file)
--- a/parse.icl
+++ b/parse.icl
@@ -243,9 +243,10 @@ tokEq (StringToken _) (StringToken _) = True
 tokEq x y = gEq {|*|} x y
 
 parseSepList :: TokenValue (Parser Token a) -> Parser Token [a]
-parseSepList sep p =
-       (liftM2 (\es->(\e->reverse [e:es])) (some (p <* satTok sep)) p) <|>
-       (liftM pure p) <|> pure empty
+parseSepList sep p = 
+    (p <* satTok sep >>= \v1-> parseSepList sep p >>= \vs -> pure [v1:vs])
+        <|> (p >>= \v-> pure [v])
+        <|> pure []
 
 parseIdent :: Parser Token String
 parseIdent = trans2 (IdentToken "") (\(IdentToken e)->toString e)