add lambda syntax

This commit is contained in:
darkf 2013-10-24 23:32:15 -07:00
parent 330f474709
commit 19aa9410fb
1 changed files with 12 additions and 0 deletions

View File

@ -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