Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Include lambda shorthand notation in "Lambda Expressions: The fun Keyword" page #43675

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
_.
```

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

The following snippets are equivalent:

`(fun x -> x.Property)`
`_.Property`

vzarytovskii marked this conversation as resolved.
Show resolved Hide resolved
## 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 text that ends with specified characters.

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

The previous code snippet 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