public PAs(string pos, MPat pat, string name) : base(pos) { Pat = pat; Name = name; Type = new TypeVar(); }
public POr(string pos, MPat pat1, MPat pat2) : base(pos) { Pat1 = pat1; Pat2 = pat2; Type = new TypeVar(); }
public MLambda(MPat arg_pat, MType arg_type, MExpr body) : base("") { ArgPat = arg_pat; ArgType = arg_type; Body = body; }
public PCons(string pos, MPat head, MPat tail) : base(pos) { Head = head; Tail = tail; ItemType = new TypeVar(); }
public MLambda(string pos, MPat arg_pat, MExpr body) : base(pos) { ArgPat = arg_pat; ArgType = new TypeVar(); Body = body; }
public MTopLet(string pos, MPat pat, MExpr expr, bool hide_type) : base(pos) { Pat = pat; Expr = expr; Type = new TypeVar(); HideType = hide_type; }
public MLet(string pos, MPat pat, MExpr e1, MExpr e2) : base(pos) { Pat = pat; E1 = e1; E2 = e2; E1Type = new TypeVar(); E2Type = new TypeVar(); }
public MMatch(string pos, MPat pat, MExpr guard, MExpr expr, MExpr then_expr, MExpr else_expr) : base(pos) { Pat = pat; Guard = guard; Expr = expr; ThenExpr = then_expr; ElseExpr = else_expr; }
public PFource(string pos, MPat pat, MType type) : base(pos) { Pat = pat; Type = type; }