Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Functioneel programmeren / Lambda’s en closures

Lambda’s

Een lambda is een functie zonder naam. Je bent al twee manieren tegengekomen om er een te schrijven. De eerste is het pointy block, dat zijn parameters achter de pijl -> opsomt:

my &square = -> $x { $x * $x };
say square(7); # 49

De tweede is de Whatever-vorm, waarin een * voor het argument staat en de uitdrukking eromheen een functie met één argument wordt:

my &square = * ** 2;
say square(7); # 49

Beide maken hetzelfde soort ding: een stuk code dat je kunt bewaren, doorgeven en aanroepen. Lambda’s komen het best tot hun recht als argumenten voor hogere-ordefuncties, waar ze een naam geven alleen maar in de weg zou zitten:

say (1..5).map(-> $n { $n * $n }); # (1 4 9 16 25)
say (1..5).map(* ** 2);            # (1 4 9 16 25)

De pointy vorm is duidelijker wanneer de body langer is of meerdere parameters heeft; de Whatever-vorm is heerlijk kort voor eenvoudige uitdrukkingen. Het zijn twee schrijfwijzen van hetzelfde idee: een functie zonder naam.

Praktijk

Maak de 1 quiz over de inhoud van dit onderwerp.

Cursusnavigatie

Lambda’s en closures   |   Quiz — Lambda’s


💪 Of ga direct naar de oefeningen in deze sectie.