@@ -274,8 +274,8 @@ pExpr' syn
274274pNoExtExpr syn =
275275 try (pApp syn)
276276 <|> pSimpleExpr syn
277− <|> try (pLambda syn)
278− <|> try (pLet syn)
277+ <|> pLambda syn
278+ <|> pLet syn
279279 <|> pPi syn
280280 <|> pDoBlock syn
281281
@@ -325,9 +325,9 @@ pfName = try pName
325325pSimpleExpr syn =
326326 try (do symbol "!["; t <- pTerm; lchar ']'
327327 return $ PQuote t)
328− <|> try (do lchar '?'; x <- pName; return (PMetavar x))
329− <|> try (do reserved "refl"; fc <- pfc; return (PRefl fc))
330− <|> try (do reserved "return"; fc <- pfc; return (PReturn fc))
328+ <|> do lchar '?'; x <- pName; return (PMetavar x)
329+ <|> do reserved "refl"; fc <- pfc; return (PRefl fc)
330+ <|> do reserved "return"; fc <- pfc; return (PReturn fc)
331331 <|> try (do x <- pfName; fc <- pfc; return (PRef fc x))
332332 <|> try (pPair syn)
333333 <|> try (do lchar '('; e <- pExpr syn; lchar ')'; return e)
@@ -346,10 +346,10 @@ pPair syn = do lchar '('; l <- pExpr syn; op <- pairOp
346346 <|> do reservedOp "**"; return PDPair
347347
348348pHSimpleExpr syn
349− = try (pSimpleExpr syn)
350− <|> do lchar '.'
349+ = do lchar '.'
351350 e <- pSimpleExpr syn
352351 return $ PHidden e
352+ <|> pSimpleExpr syn
353353
354354pApp syn = do f <- pSimpleExpr syn
355355 fc <- pfc
@@ -408,12 +408,12 @@ pDoBlock syn
408408 return (PDoBlock ds)
409409
410410pDo syn
411− = try (do i <- pName; symbol "<-"; fc <- pfc
411+ = do reserved "let"; i <- pName; reservedOp "="; fc <- pfc
412+ e <- pExpr syn
413+ return (DoLet fc i e)
414+ <|> try (do i <- pName; symbol "<-"; fc <- pfc
412415 e <- pExpr syn;
413416 return (DoBind fc i e))
414− <|> try (do reserved "let"; i <- pName; reservedOp "="; fc <- pfc
415− e <- pExpr syn
416− return (DoLet fc i e))
417417 <|> try (do e <- pExpr syn; fc <- pfc
418418 return (DoExp fc e))
419419