Компилятор ругается на такой код:
match(t)
{
|2 with f=fun(a){a*2} => f(t)
|3 with f=fun(a){a+3} => f(t)
};
Если поставить скобки, то все ок:
match(t)
{
|2 with f= ( fun(a){a*2} ) => f(t)
|3 with f= ( fun(a){a+3} ) => f(t)
};
Это баг или бай дезайн?
Здравствуйте, Don Reba, Вы писали:
DR>А какой в этом смысл? Разве функции можно сравнивать с образцом?
Сравнивать нельзя, но можно представить сценарий типа:
match (action, postAction)
{
| (action, null) with (postAction = fun() {})
| (action, postAction) =>
action(data);
postAction();
}
Здравствуйте, Don Reba, Вы писали:
DR>А какой в этом смысл? Разве функции можно сравнивать с образцом?
Тут не сравнение, а присваивание.
Похоже все же недочет:
using System.Console;
match (1)
{
| x when (fun(p){p})(1) == 1 => Write("A");
| _ => Write("B");
}
Тут без скобок тоже не скомпилируется.