From e9fefc72cffd266f05269f87992606365f8bd57a Mon Sep 17 00:00:00 2001 From: Tomas Musil Date: Wed, 3 Dec 2014 14:47:09 +0100 Subject: [PATCH] multiple args in lambda --- src/Lambda.hs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Lambda.hs b/src/Lambda.hs index 5165bb8..f9fbe2b 100644 --- a/src/Lambda.hs +++ b/src/Lambda.hs @@ -28,10 +28,15 @@ parseVar = do parseLambda :: Parser Term parseLambda = do char '\\' - (Var x) <- parseVar + vars <- many1 (parseVar <* char ' ') char '.' t <- parseTerm - return $! Lambda x t + return $! createLambda vars t + +createLambda :: [Term] -> Term -> Term +createLambda (Var x : vs) t = Lambda x $ createLambda vs t +createLambda [] t = t +createLambda _ _ = error "createLambda failed" parseApp :: Parser Term parseApp = do -- 2.4.2