@@ -94,18 +94,21 @@ lambdaExpr = do char '\\' <|> char '\x03BB' <?> "anonymous function"
95 return $ makeLambda pats e
95 return $ makeLambda pats e
97−letExpr = do
97+defSet = do
99− brace <- optionMaybe . try $ do
98+ brace <- optionMaybe $ do
101 char '{' <?> "a set of definitions { x = ... ; y = ... }"
99 char '{' <?> "a set of definitions { x = ... ; y = ... }"
102 case brace of
101 case brace of
103− Nothing -> do whitespace; ds <- assignExpr
102+ Nothing -> assignExpr
104− whitespace; reserved "in"; whitespace; Let ds <$> expr
105− Just '{' -> do whitespace ; dss <- semiSep1 assignExpr ; whitespace
103+ Just '{' -> do dss <- semiSep1 assignExpr
106 string "}" <?> "closing bracket '}'"
105 string "}" <?> "closing bracket '}'"
107− whitespace; reserved "in"; whitespace; e <- expr
108− return $ Let (concat dss) e
106+ return (concat dss)
108+ reserved "let" ; whitespace
110+ whitespace ; reserved "in" ; whitespace
110caseExpr = do
113caseExpr = do
111 reserved "case"; whitespace; e <- expr; whitespace; reserved "of"; whitespace
114 reserved "case"; whitespace; e <- expr; whitespace; reserved "of"; whitespace