let average a b = ...
в точности эквивалентно let average = fun a b -> ...
- вы всегда можете использовать первое поверх второго.Это просто вопрос стиля, который вы предпочитаете.Мне кажется, что большинство программистов используют первую форму, но некоторые вводные материалы используют последнюю форму, чтобы прояснить, что функции являются значениями, как и любые другие, и могут быть созданы с использованием ключевого слова fun
.
Однако let f = fun ...
не единственный способ использовать fun
.Вы можете использовать его там, где ожидается значение типа функции, например, в качестве аргумента map
.Поэтому, если у вас есть что-то вроде List.map (fun x -> x+1) xs
, вы не можете просто поставить let
вместо fun
, потому что определение там не имеет синтаксического смысла.Конечно, вы можете использовать let add1 x = x+1 in List.map add1 xs
, и это прекрасно работает, но это более многословно и вводит новое имя, которое используется только один раз и ничего не добавляет.
Так что fun
полезно, когда вы хотитепередать функцию без указания имени.