Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,19 @@ The `fun` keyword is used to define a lambda expression, that is, an anonymous f
fun parameter-list -> expression
```

or using the _.Property shorthand notation:

```fsharp
_.
```

where `fun`, *parameter-list* and lambda arrow (`->`) is omitted and the `_.` is a part of *expression* where `_` replaces the parameter symbol.

The following snippets are equivalent:
`(fun x -> x.Property)`
`_.Property`


## Remarks

The *parameter-list* typically consists of names and, optionally, types of parameters. More generally, the *parameter-list* can be composed of any F# patterns. For a full list of possible patterns, see [Pattern Matching](../pattern-matching.md). Lists of valid parameters include the following examples.
Expand Down Expand Up @@ -41,10 +54,12 @@ The *expression* is the body of the function, the last expression of which gener

## Using Lambda Expressions

Lambda expressions are especially useful when you want to perform operations on a list or other collection and want to avoid the extra work of defining a function. Many F# library functions take function values as arguments, and it can be especially convenient to use a lambda expression in those cases. The following code applies a lambda expression to elements of a list. In this case, the anonymous function adds 1 to every element of a list.
Lambda expressions are especially useful when you want to perform operations on a list or other collection and want to avoid the extra work of defining a function. Many F# library functions take function values as arguments, and it can be especially convenient to use a lambda expression in those cases. The following code applies a lambda expression to elements of a list. In this case, the anonymous function checks if an element is a text ending with specified characters.

[!code-fsharp[Main](~/samples/snippets/fsharp/lang-ref-1/snippet302.fs)]

The above shows both notations: using the `fun` keyword, and the shorthand `_.Property` notation.

## See also

- [Functions](index.md)
7 changes: 5 additions & 2 deletions samples/snippets/fsharp/lang-ref-1/snippet302.fs
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
let list = List.map (fun i -> i + 1) [ 1; 2; 3 ]
printfn "%A" list
let fullNotation = [ "a"; "ab"; "abc" ] |> List.find ( fun text -> text.EndsWith("c") )
printfn "%A" fullNotation // Output: "abc"

let shorthandNotation = [ "a"; "ab"; "abc" ] |> List.find ( _.EndsWith("b") )
printfn "%A" shorthandNotation // Output: "ab"
Loading