From e83d85eb08a370f3943294f21a4c27cd3b12ad09 Mon Sep 17 00:00:00 2001 From: Tom Smeding Date: Wed, 24 Apr 2019 21:57:27 +0200 Subject: Start working on a type checker --- src/Haskell/Parser.hs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/Haskell/Parser.hs') 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 -- cgit v1.2.3-70-g09d2