multiple args in lambda
authorTomas Musil <tomik.musil@gmail.com>
Wed, 3 Dec 2014 13:47:09 +0000 (14:47 +0100)
committerTomas Musil <tomik.musil@gmail.com>
Wed, 3 Dec 2014 13:47:32 +0000 (14:47 +0100)
src/Lambda.hs

index 5165bb8..f9fbe2b 100644 (file)
@@ -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