Pattern matching in lambda added
This commit is contained in:
parent
322286d898
commit
dead9eb75a
2 changed files with 3 additions and 1 deletions
|
|
@ -65,7 +65,8 @@ internal EVar. Exp4 ::= LIdent;
|
|||
EApp. Exp3 ::= Exp3 Exp4;
|
||||
EAdd. Exp2 ::= Exp2 "+" Exp3;
|
||||
ELet. Exp1 ::= "let" Bind "in" Exp1;
|
||||
EAbs. Exp1 ::= "\\" LIdent "." Exp1;
|
||||
EAbsS. Exp1 ::= "\\" Pattern "." Exp1;
|
||||
internal EAbs. Exp1 ::= "\\" LIdent "." Exp1;
|
||||
ECase. Exp1 ::= "case" Exp "of" "{" [Branch] "}";
|
||||
EAnn. Exp ::= Exp1 ":" Type;
|
||||
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ desugarExp = \case
|
|||
EApp e1 e2 -> EApp (desugarExp e1) (desugarExp e2)
|
||||
EAdd e1 e2 -> EAdd (desugarExp e1) (desugarExp e2)
|
||||
EAbs i e -> EAbs i (desugarExp e)
|
||||
EAbsS pat e -> EAbs (LIdent "$zz$") (ECase (EVar "$zz$") [Branch (desugarPattern pat) (desugarExp e)])
|
||||
ELet b e -> ELet (desugarBind b) (desugarExp e)
|
||||
ECase e br -> ECase (desugarExp e) (map desugarBranch br)
|
||||
EAnn e t -> EAnn (desugarExp e) t
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue