Ответ Лямбда-функции - это функции, у которой фактически нет имени. Таким образом математики упростили до невозможности формат записи функции, а вообще лямбда-исчислениями пытались формализовать вычисления λx.x λ — означает, что это лямбда-функция. Всё что после неё - список аргументов, в идеале абсолютно любого типа, в том числе может быть и другая лямбда-функция. После точки идёт "тело функции", а уже потом, собственно, идёт аргумент, который будет передан. Т.о. λx.x+2 2 // вернёт 4 Пример посложнее: λx.x 2 λy.y+1 // результат 3 Здесь в качестве параметра x выступает другая лямбда-функция λy.y + 1, в которую передаётся параметр 2. То есть любая лямбда функция является функцией высшего порядка, может принимать в качестве аргумента другую функцию и возвращать функцию: λx.λy.y+x+3 2 // вернёт λy.y+5, т.к. x был равен двум. λx.λy.y+x+3 2 3 // вернёт 8. Фактически это каррирование: сначала функция принимает аргумент 2 и возвращает функцию, которая принимает ещё один аргумент и возвращает результат. Если интересно, я когда-то писал аналогичные вещи на C# Теперь давайте посмотрим, как же все наши примеры будут выглядеть на C#. Здесь в качестве лямбда-функции я использую Func, где T - тип аргумента, а U - тип возвращаемого значения: 1) Func func = x=>x 2) var result = new Func(x=>x+2)(2) 3) var result = new Func, int>(x=>x(2))(new Func(y=>y+1)) 4) var result = new Func>(x=>y=>y+x+3)(2) 5) var result = new Func>(x=>y=>y+x+3)(2)(3) Сложность составляет только явное указание типа аргументов и возвращаемого значения.