Объясните отличия между нижеприведенными вариантами объявления функции.
Насколько я понимаю:
В 1 можно использовать название блока в функции, хотя насколько оно здесь нужно не известно.
2 и 3 равнозначны.
В 4 нельзя использовать аргумент более одного раза.
using System.Console;
def n(f) { WriteLine(f(1, 2)); }
// 1.
n(b : {def f(x, y) { x + y }; f });
// 2.
n(fun(x, y) { x + y });
// 3.
n((x, y) => { x + y });
// 4.
n(_ + _);
P.S.
В приведенном примере сгенерированно 4 (!) класса, вместо одного
30.01.07 18:07: Перенесено модератором из 'Декларативное программирование' — IT