From 3b20f8a9e85696b86f698e1bdbdbd31b786b77c2 Mon Sep 17 00:00:00 2001 From: Arnaud Bailly Date: Fri, 17 Oct 2025 16:49:32 +0200 Subject: feat: parses single application --- lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'lambda-calcul/haskell/src/Minilang/Lambda') diff --git a/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs b/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs index 8e97d46..e60d761 100644 --- a/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs +++ b/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs @@ -13,7 +13,7 @@ type Parser = Parsec Void Text data ParseError = ParseError Text deriving (Eq, Show) -data AST = Sym Text | Abs [Text] AST +data AST = Sym Text | Abs [Text] AST | App AST AST deriving (Eq, Show) parse :: Text -> Either ParseError AST @@ -21,7 +21,14 @@ parse = first (ParseError . pack . errorBundlePretty) . Text.Megaparsec.parse ast "" ast :: Parser AST -ast = try lambda <|> try sym +ast = try lambda <|> try sym <|> try app + +app :: Parser AST +app = + between + lpar + rpar + (App <$> ast <*> ast) lambda :: Parser AST lambda = -- cgit v1.2.3