public TMonad Evaluate(IContext <TMonad> context) { var c = ConditionExpr.Evaluate(context); return(Monad.Bind(c, BindC)); TMonad BindC(object res) { return(res is bool b ? (b ? TrueExpr.Evaluate(context) : FalseExpr.Evaluate(context)) : Monad.Unit); } }
public double Evaluate(Dictionary <string, object> variables) { return(ConditionExpr.Evaluate(variables) ? LeftExpr.Evaluate(variables) : RightExpr.Evaluate(variables)); }