diff options
Diffstat (limited to 'src/Haskell/Parser.hs')
-rw-r--r-- | src/Haskell/Parser.hs | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/Haskell/Parser.hs b/src/Haskell/Parser.hs index 41216d5..0536fde 100644 --- a/src/Haskell/Parser.hs +++ b/src/Haskell/Parser.hs @@ -29,35 +29,35 @@ pDef = do symbolO ";" case args of [] -> return $ Def n ex - _ -> return $ Def n (Lam args ex) + _ -> return $ Def n (Lam args ex Nothing) pExpr :: Parser Expr pExpr = pLam <|> pCase <|> pApp where - pSimpleExpr = choice [Num <$> pNum - ,Ref <$> pVariable + pSimpleExpr = choice [Num <$> pNum <*> return Nothing + ,Ref <$> pVariable <*> return Nothing ,parens (pExpr `sepBy` symbolO ",") >>= \case [ex] -> return ex - exs -> return $ Tup exs] + exs -> return $ Tup exs Nothing] pLam = do symbolO "\\" args <- many1 pNameV symbolO "->" body <- pExpr - return $ Lam args body + return $ Lam args body Nothing pApp = many1 pSimpleExpr >>= \case [] -> undefined [e] -> return e - (e:es) -> return $ App e es + (e:es) -> return $ App e es Nothing pCase = do symbolW "case" e <- pExpr symbolW "of" arms <- braces (pCaseArm `sepBy` symbolO ";") - return $ Case e arms + return $ Case e arms Nothing pCaseArm = do pat <- pLargePat |