Lambda-expressies: het leuke trefwoord (F#)

Het fun trefwoord wordt gebruikt om een lambda-expressie te definiëren, een anonieme functie.

Syntaxis

fun parameter-list -> expression

Opmerkingen

De parameterlijst bestaat doorgaans uit namen en, optioneel, typen parameters. Over het algemeen kan de parameterlijst bestaan uit F#-patronen. Zie Patroonkoppeling voor een volledige lijst met mogelijke patronen. Lijsten met geldige parameters bevatten de volgende voorbeelden.

// 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 cons pattern.
// (note that this will generate an incomplete pattern match warning)
fun (head :: tail) -> …

// A lambda expression with a list pattern.
// (note that this will generate an incomplete pattern match warning)
fun [_; rest] -> …

De expressie is de hoofdtekst van de functie, waarvan de laatste expressie een retourwaarde genereert. Voorbeelden van geldige lambda-expressies zijn:

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)

Lambda-expressies gebruiken

Lambda-expressies zijn vooral handig wanneer u bewerkingen wilt uitvoeren op een lijst of andere verzameling en wilt voorkomen dat u een functie extra werk definieert. Veel F#-bibliotheekfuncties nemen functiewaarden als argumenten en het kan met name handig zijn om in die gevallen een lambda-expressie te gebruiken. Met de volgende code wordt een lambda-expressie toegepast op elementen van een lijst. In dit geval voegt de anonieme functie 1 toe aan elk element van een lijst.

let list = List.map (fun i -> i + 1) [ 1; 2; 3 ]
printfn "%A" list

Zie ook