@@ -31,25 +31,11 @@ def = Def <$> try (L.indentGuard sc EQ pos1 *> var) <*> many var <* op "=" <*> (
3131expr :: Pos -> Parser Exp
3232expr i = L. indentGuard sc EQ i >>
3333 try ((\ pat e b -> EBind e pat b) <$> try (bindingPat <* op " <-" ) <*> simpleExp i <*> expr i ) <|>
34- ifThenElse i <|>
3534 simpleExp i
3635
37- ifThenElse :: Pos -> Parser Exp
38- ifThenElse i = do
39- kw " if"
40- b <- var
41- kw " then"
42- t <- (L. indentGuard sc GT i >>= expr)
43- L. indentGuard sc EQ i
44- kw " else"
45- e <- (L. indentGuard sc GT i >>= expr)
46- return $ ECase b [ Alt (LitPat (LBool True )) t
47- , Alt (LitPat (LBool False )) e
48- ]
49-
5036simpleExp :: Pos -> Parser SimpleExp
5137simpleExp i = SReturn <$ kw " pure" <*> value <|>
52- ECase <$ kw " case" <*> var <* kw " of" <*> (L. indentGuard sc GT i >>= some . nAlternative ) <|>
38+ ECase <$ kw " case" <*> var <* kw " of" <*> (L. indentGuard sc GT i >>= some . alternative ) <|>
5339 SStore <$ kw " store" <*> var <|>
5440 SFetch <$ kw " fetch" <*> var <|>
5541 SUpdate <$ kw " update" <*> var <*> var <|>
@@ -62,10 +48,7 @@ primNameOrDefName :: Parser Name
6248primNameOrDefName = nMap (" _" <> ) <$ char ' _' <*> var <|> var
6349
6450alternative :: Pos -> Parser Alt
65- alternative i = Alt <$> try (L. indentGuard sc EQ i *> altPat) <* op " ->" <*> (L. indentGuard sc GT i >>= expr)
66-
67- nAlternative :: Pos -> Parser NAlt
68- nAlternative i = NAlt <$> try (L. indentGuard sc EQ i *> altPat) <*> (op " @" *> var) <* op " ->" <*> (L. indentGuard sc GT i >>= expr)
51+ alternative i = Alt <$> try (L. indentGuard sc EQ i *> altPat) <*> (op " @" *> var) <* op " ->" <*> (L. indentGuard sc GT i >>= expr)
6952
7053-- NOTE: The parser `value` already handles the parentheses around "complex" values,
7154-- and we don't want to parenthesize variables, literals and units.
0 commit comments