Лямбда-выражения: ключевое слово fun (F#)
Ключевое слово fun используется для определения лямбда-выражения, т. е. анонимной функции.
fun parameter-list -> expression
Заметки
parameter-list обычно состоит из имен и, при необходимости, типов параметров.В общем случае parameter-list может состоять из всех шаблонов F#.Полный список возможных шаблонов см. в разделе Сопоставление шаблонов (F#).Список допустимых параметров приведены следующие примеры.
// Lambda expressions with parameter lists.
fun a b c -> ...
fun (a: int) b c -> ...
fun (a : int) (b : string) (c:float) -> ...
// A lambda expression with a tuple pattern.
fun (a, b) -> …
// A lambda expression with a list pattern.
fun head :: tail -> …
expression — это тело функции, последнее выражение которого формирует возвращаемое значение.Примеры допустимых лямбда-выражений:
fun x -> x + 1
fun a b c -> printfn "%A %A %A" a b c
fun (a: int) (b: int) (c: int) -> a + b * c
fun x y -> let swap (a, b) = (b, a) in swap (x, y)
Использование лямбда-выражений
Лямбда-выражения особенно полезны, когда требуется выполнять операции над списком или другой коллекцией и хотелось бы избежать лишней работы — определения функции.Многие библиотечные функции F# принимают в качестве аргументов значения функций; в этих случаях использовать лямбда-выражение может быть особенно удобно.В следующем коде лямбда-выражение применяется к элементам списка.В данном случае анонимная функция добавляет 1 к каждому элементу списка.
let list = List.map (fun i -> i + 1) [1;2;3]
printfn "%A" list