From 19aa9410fbcb3c913fba18834d77718290917de3 Mon Sep 17 00:00:00 2001 From: darkf Date: Thu, 24 Oct 2013 23:32:15 -0700 Subject: [PATCH] add lambda syntax --- parser.hs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/parser.hs b/parser.hs index f124a64..cc850e9 100644 --- a/parser.hs +++ b/parser.hs @@ -117,6 +117,17 @@ funDef = do body <- exprparser return $ Defun name $ Lambda [(pat, body)] +lambda = do + symbol "\\" + pats <- patterns + let pat = (case pats of + [] -> UnitP + [a] -> a + otherwise -> TupleP pats) + symbol "->" + body <- exprparser + return $ Lambda [(pat, body)] + call = do name <- identifier whiteSpace @@ -156,6 +167,7 @@ def = do expr' = try block <|> try funDef <|> try call + <|> try lambda <|> try (emptyTuple TupleConst) <|> try (tupleSeq exprparser TupleConst) <|> parens exprparser