Remove lambda patterns
This commit is contained in:
parent
019ed0d45a
commit
b5b6d96f77
2 changed files with 12 additions and 12 deletions
|
|
@ -65,8 +65,8 @@ internal EVar. Exp4 ::= LIdent;
|
||||||
EApp. Exp3 ::= Exp3 Exp4;
|
EApp. Exp3 ::= Exp3 Exp4;
|
||||||
EAdd. Exp2 ::= Exp2 "+" Exp3;
|
EAdd. Exp2 ::= Exp2 "+" Exp3;
|
||||||
ELet. Exp1 ::= "let" Bind "in" Exp1;
|
ELet. Exp1 ::= "let" Bind "in" Exp1;
|
||||||
EAbsS. Exp1 ::= "\\" Pattern "." Exp1;
|
-- EAbsS. Exp1 ::= "\\" Pattern "." Exp1;
|
||||||
internal EAbs. Exp1 ::= "\\" LIdent "." Exp1;
|
EAbs. Exp1 ::= "\\" LIdent "." Exp1;
|
||||||
ECase. Exp1 ::= "case" Exp "of" "{" [Branch] "}";
|
ECase. Exp1 ::= "case" Exp "of" "{" [Branch] "}";
|
||||||
EAnn. Exp ::= Exp1 ":" Type;
|
EAnn. Exp ::= Exp1 ":" Type;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,18 +62,18 @@ desugarInj (Inj ident typ) = Inj ident (desugarType typ)
|
||||||
|
|
||||||
desugarExp :: Exp -> Exp
|
desugarExp :: Exp -> Exp
|
||||||
desugarExp = \case
|
desugarExp = \case
|
||||||
EApp e1 e2 -> EApp (desugarExp e1) (desugarExp e2)
|
EApp e1 e2 -> EApp (desugarExp e1) (desugarExp e2)
|
||||||
EAdd e1 e2 -> EAdd (desugarExp e1) (desugarExp e2)
|
EAdd e1 e2 -> EAdd (desugarExp e1) (desugarExp e2)
|
||||||
EAbs i e -> EAbs i (desugarExp e)
|
EAbs i e -> EAbs i (desugarExp e)
|
||||||
EAbsS pat e -> EAbs (LIdent "$zz$") (ECase (EVar "$zz$") [Branch (desugarPattern pat) (desugarExp e)])
|
-- EAbsS pat e -> EAbs (LIdent "$zz$") (ECase (EVar "$zz$") [Branch (desugarPattern pat) (desugarExp e)])
|
||||||
ELet b e -> ELet (desugarBind b) (desugarExp e)
|
ELet b e -> ELet (desugarBind b) (desugarExp e)
|
||||||
ECase e br -> ECase (desugarExp e) (map desugarBranch br)
|
ECase e br -> ECase (desugarExp e) (map desugarBranch br)
|
||||||
EAnn e t -> EAnn (desugarExp e) t
|
EAnn e t -> EAnn (desugarExp e) t
|
||||||
EVarS (VSymbol (Symbol symb)) -> EVar (LIdent $ fixName symb)
|
EVarS (VSymbol (Symbol symb)) -> EVar (LIdent $ fixName symb)
|
||||||
EVarS (VIdent (LIdent ident)) -> EVar $ LIdent $ fixName ident
|
EVarS (VIdent (LIdent ident)) -> EVar $ LIdent $ fixName ident
|
||||||
EVar i -> EVar i
|
EVar i -> EVar i
|
||||||
ELit l -> ELit l
|
ELit l -> ELit l
|
||||||
EInj i -> EInj i
|
EInj i -> EInj i
|
||||||
|
|
||||||
desugarBranch :: Branch -> Branch
|
desugarBranch :: Branch -> Branch
|
||||||
desugarBranch (Branch p e) = Branch (desugarPattern p) (desugarExp e)
|
desugarBranch (Branch p e) = Branch (desugarPattern p) (desugarExp e)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue