summaryrefslogtreecommitdiff
path: root/src/Haskell/Parser.hs
diff options
context:
space:
mode:
authorTom Smeding <tom.smeding@gmail.com>2019-04-24 21:57:27 +0200
committerTom Smeding <tom.smeding@gmail.com>2019-04-24 21:57:27 +0200
commite83d85eb08a370f3943294f21a4c27cd3b12ad09 (patch)
tree14d600ce00b99942033e44f5160e5cef169471e9 /src/Haskell/Parser.hs
parent8a3653d8f30f7d0f79556f464ea781472a931b2e (diff)
Start working on a type checkertypes
Diffstat (limited to 'src/Haskell/Parser.hs')
-rw-r--r--src/Haskell/Parser.hs14
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