diff options
author | Tom Smeding <tom.smeding@gmail.com> | 2019-04-24 21:57:27 +0200 |
---|---|---|
committer | Tom Smeding <tom.smeding@gmail.com> | 2019-04-24 21:57:27 +0200 |
commit | e83d85eb08a370f3943294f21a4c27cd3b12ad09 (patch) | |
tree | 14d600ce00b99942033e44f5160e5cef169471e9 /src/Haskell/Parser.hs | |
parent | 8a3653d8f30f7d0f79556f464ea781472a931b2e (diff) |
Start working on a type checkertypes
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 |