public _Generic(SExpr sexp, Expression._Symbol typeName, StrictList<TypeReference> typeParams) : base(sexp) { TypeName = typeName; TypeParams = typeParams; }
public VariableDefinition(SExpr sexp, Expression._Symbol name, TypeReference type) : base(sexp) { Name = name; Type = type; }
public static Expression Set(SExpr sexp, _Symbol variable, Expression value) { return new _Set (sexp, variable, value); }
public static Expression Quoted(SExpr sexp, Expression quotedExpression) { return new _Quoted (sexp, quotedExpression); }
public static Expression LetRec(SExpr sexp, StrictList<Tuple<VariableDefinition, Expression>> definitions, Expression body) { return new _LetRec (sexp, definitions, body); }
public static Expression Let(SExpr sexp, VariableDefinition variable, Expression value, Expression body) { return new _Let (sexp, variable, value, body); }
public _If(SExpr sexp, Expression condition, Expression thenExpression, Expression elseExpression) : base(sexp) { Condition = condition; ThenExpression = thenExpression; ElseExpression = elseExpression; }
public static TypeReference Simple(Expression._Symbol typeName) { return new _Simple (typeName); }
public static Expression If(SExpr sexp, Expression condition, Expression thenExpression, Expression elseExpression) { return new _If (sexp, condition, thenExpression, elseExpression); }
public _Quoted(SExpr sexp, Expression quotedExpression) : base(sexp) { QuotedExpression = quotedExpression; }
public static Expression Application(SExpr sexp, Expression function, StrictList<Expression> parameters) { return new _Application (sexp, function, parameters); }
public _LetRec(SExpr sexp, StrictList<Tuple<VariableDefinition, Expression>> definitions, Expression body) : base(sexp) { Definitions = definitions; Body = body; }
public _Let(SExpr sexp, VariableDefinition variable, Expression value, Expression body) : base(sexp) { Variable = variable; Value = value; Body = body; }
public _Lambda(SExpr sexp, StrictList<VariableDefinition> parameters, Expression functionBody) : base(sexp) { Parameters = parameters; FunctionBody = functionBody; }
public _Simple(Expression._Symbol typeName) : base(typeName.SExp) { TypeName = typeName; }
public static TypeReference Generic(SExpr sexp, Expression._Symbol typeName, StrictList<TypeReference> typeParams) { return new _Generic (sexp, typeName, typeParams); }
public _Set(SExpr sexp, _Symbol variable, Expression value) : base(sexp) { Variable = variable; Value = value; }
public static Expression Lambda(SExpr sexp, StrictList<VariableDefinition> parameters, Expression functionBody) { return new _Lambda (sexp, parameters, functionBody); }
public _Application(SExpr sexp, Expression function, StrictList<Expression> parameters) : base(sexp) { Function = function; Parameters = parameters; }