public TExpression Substitute(MathContext context) { TOperand sub = this.Operand.Substitute(context); if (sub.Equals(this.Operand)) { return(this.AsExpressionType()); } return(this.OpFunction(sub)); }
public TExpression Evaluate(MathContext context) { TOperand eval = this.Operand.Evaluate(context); if (eval.Equals(this.Operand)) { return(this.AsExpressionType()); } return(this.OpFunction(eval)); }
public TExpression Substitute(MathContext context) { TArgA subA = this.A.Substitute(context); TArgB subB = this.B.Substitute(context); if (subA.Equals(this.A) && subB.Equals(this.B)) { return(this.AsExpressionType()); } return(this.OpFunction(subA, subB)); }
public TExpression Evaluate(MathContext context) { TArgA evalA = this.A.Evaluate(context); TArgB evalB = this.B.Evaluate(context); if (evalA.Equals(this.A) && evalB.Equals(this.B)) { return(this.AsExpressionType()); } return(this.OpFunction(evalA, evalB)); }
public TExpression Substitute(MathContext context) => (context[this.Identifier] is TExpression e) ? e : this.AsExpressionType();
public TExpression Evaluate(MathContext context) => (context[this.Identifier] is TExpression e) ? e.Evaluate(context) : this.AsExpressionType();