diff options
author | Yann Herklotz <git@yannherklotz.com> | 2022-03-15 11:26:34 +0000 |
---|---|---|
committer | Yann Herklotz <git@yannherklotz.com> | 2022-03-15 11:26:34 +0000 |
commit | 77c74349dc7a10563755eda86a4682d14bfcca49 (patch) | |
tree | 7976adf337edcde75551acf2e4fb401c4bd66e50 /src | |
parent | cf44e166a956bb7a00f9185291f02c54d213be0f (diff) | |
download | choc-77c74349dc7a10563755eda86a4682d14bfcca49.tar.gz choc-77c74349dc7a10563755eda86a4682d14bfcca49.zip |
Add explicit shell.nix file
Diffstat (limited to 'src')
-rw-r--r-- | src/Choc/SimplyTyped.hs | 17 |
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) |