diff options
| author | Arnaud Bailly <arnaud@pankzsoft.com> | 2025-10-17 16:45:29 +0200 |
|---|---|---|
| committer | Arnaud Bailly <arnaud@pankzsoft.com> | 2025-10-17 16:45:29 +0200 |
| commit | dee78cba2ec18da811fd6f0499efe1bd27ad34e5 (patch) | |
| tree | ef34a61d88969adc75f37770409c816b6f8cfc76 /lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs | |
| parent | 78d2b3acf77dc0500d27836915dce99a9c368b53 (diff) | |
| download | lambda-nantes-dee78cba2ec18da811fd6f0499efe1bd27ad34e5.tar.gz | |
feat: parse λ-expr with multiple bindings
Diffstat (limited to 'lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs')
| -rw-r--r-- | lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs b/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs index 545536d..8e97d46 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 deriving (Eq, Show) parse :: Text -> Either ParseError AST @@ -28,10 +28,10 @@ lambda = between lpar rpar - ( do - lexeme "lam" - binding <- pack <$> between lpar rpar identifier - Abs binding <$> ast + ( lexeme "lam" + *> ( (Abs . fmap pack <$> between lpar rpar (many identifier)) + <*> ast + ) ) lpar :: Parser Text |
