Я думаю, что общий аргумент против сохранения изменяемого состояния в статических классах и использования их в качестве глобальных переменных. Нет ничего плохого в статических вспомогательных методах в статическом классе.
А что касается того, почему глобальные переменные плохие, я уверен, что здесь и в Google вы найдете полмиллиона страниц и постов об этом.
Семантика для этого такая же, что и в F # (вероятно, потому что F # основан на OCaml):
function
позволяет использовать сопоставление с образцом (например, |
), но, следовательно, ему может быть передан только один аргумент.
function p_1 -> exp_1 | … | p_n -> exp_n
эквивалентно
fun exp -> сопоставить exp с p_1 -> exp_1 | … | p_n -> exp_n
fun
не разрешает сопоставление с образцом, но может передавать несколько аргументов, например
fun xy -> x + y
Когда может использоваться любая из двух форм, fun
обычно предпочтительнее из-за его компактности.
См. Также документацию OCaml по функциям .
Я думаю, что
function patterns
- это сокращение для
(fun x -> match x with patterns)
, где «шаблоны» - это, например,
| Some(x) -> yadda | None -> blah
(а
fun args -> expr
- это то, как вы определяете лямбду.)
Расс Кэм прав в своем ответе.
Вот запись в списке OCaml, в которой говорится об этом
Обычно я использую fun, если нет веской причины использовать функцию.
Вы можете увидеть это в опубликованном вами коде, где объявление fun
принимает 3 аргумента, а функция
объявление выполняет сопоставление с образцом на входе