Я работаю с деревьями выражений уже несколько дней, и мне любопытно узнать, что делает Expression.Reduce(). Документация по msdn не очень полезна, поскольку в ней говорится только, что она "уменьшает" выражение. На всякий случай я попробовал пример (см. Ниже), чтобы проверить, включает ли этот метод математическое сокращение, но, похоже, это не так.
Кто-нибудь знает, что делает этот метод, и можно ли привести быстрый пример, показывающий его в действии? Какие-нибудь хорошие ресурсы там?
static void Main(string[] args)
{
Expression<Func<double, double>> func = x => (x + x + x) + Math.Exp(x + x + x);
Console.WriteLine(func);
Expression r_func = func.Reduce();
Console.WriteLine(r_func); // This prints out the same as Console.WriteLine(func)
}