From: Tomas Musil Date: Wed, 3 Dec 2014 13:47:09 +0000 (+0100) Subject: multiple args in lambda X-Git-Url: http://git.tomasm.cz/fp.git/commitdiff_plain/e9fefc72cffd266f05269f87992606365f8bd57a multiple args in lambda --- 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