aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2022-03-15 11:26:34 +0000
committerYann Herklotz <git@yannherklotz.com>2022-03-15 11:26:34 +0000
commit77c74349dc7a10563755eda86a4682d14bfcca49 (patch)
tree7976adf337edcde75551acf2e4fb401c4bd66e50 /src
parentcf44e166a956bb7a00f9185291f02c54d213be0f (diff)
downloadchoc-77c74349dc7a10563755eda86a4682d14bfcca49.tar.gz
choc-77c74349dc7a10563755eda86a4682d14bfcca49.zip
Add explicit shell.nix file
Diffstat (limited to 'src')
-rw-r--r--src/Choc/SimplyTyped.hs17
1 files changed, 4 insertions, 13 deletions
diff --git a/src/Choc/SimplyTyped.hs b/src/Choc/SimplyTyped.hs
index 3481ec6..cf67b14 100644
--- a/src/Choc/SimplyTyped.hs
+++ b/src/Choc/SimplyTyped.hs
@@ -76,27 +76,18 @@ evalMay t = eval t <$ check [] t
parseLambda :: Parser Term
parseLambda = parens $ do
_ <- reserved "L"
- t <- parseType
- b <- parseTerm
- return $ Lambda t b
+ Lambda <$> parseType <*> parseTerm
parseApp :: Parser Term
-parseApp = parens $ do
- t1 <- parseTerm
- t2 <- parseTerm
- return $ App t1 t2
+parseApp = parens $ App <$> parseTerm <*> parseTerm
parseVar :: Parser Term
parseVar = Var <$> integer
parseType :: Parser Type
parseType =
- (reserved "B" $> Bass) <|>
- (parens $ do
- _ <- reservedOp "->"
- t1 <- parseType
- t2 <- parseType
- return (Arrow t1 t2))
+ reserved "B" $> Bass <|>
+ parens (reservedOp "->" >> (Arrow <$> parseType <*> parseType))
parseTerm :: Parser Term
parseTerm = try parseLambda <|> parseApp <|> parseVar <|> (reserved "C" $> Const)