summaryrefslogtreecommitdiff
path: root/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs')
-rw-r--r--lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs10
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