Begreppet "first-class function" innebär att en funktion är ett värde som kan skickas runt i ett program, utöver att den kan anropas. Språk som Haskell, F# och Scala hanterar första klassens funktioner, liksom en del skriptspråk som Javascript och Python.
Bild: Oddbodz
2/7
Higher-order function.
En funktion som kan ta emot en annan funktion som en parameter och/eller returnerar en annan funktion. Ett exempel är en funktion som tar emot en lista på värden och en annan funktion som parametrar, och returnerar en ny lista med värden som påverkats av funktionen som togs emot som parameter.
3/7
Anonym funktion.
En funktion som inte är kopplad till en identifierare, alltså inte har något namn.
4/7
Immutable.
Data som inte kan förändras efter att de skapats, och kan behandlas som fakta eftersom de inte förändras. Om man vill ändra värdet på en variabel som pekar på sådana data måste variabeln ”pekas om” till andra data. Textsträngar i Java och Javascript är exempel.
Bild: ceridwen
5/7
Closure.
En ”closure” skapas genom att lyfta in externa beteenden och variabler i en exekverbar bit program. Den exekverbara programbiten kan sedan skickas vidare i nya anrop. Möjligheten att utnyttja kod som inte explicit refereras ger flexibilitet.
Bild: Wikipedia
6/7
Currying.
Currying är att istället för att ha en parameterlista med ett visst antal parametrar till en funktion, så används en funktion som bara kan ta en parameter, men som kan returnera en funktion som tar emot nästa parameter istället.
7/7
Lambda.
Anonyma funktioner och closures kallas för lambdauttryck i språket Java, från och med version 8.
Stort tack till Viktor Klang, chefsarkitekt på Typesafe, för hjälp med förklaringarna. Typesafe utvecklar bland annat ramverk och mellanprogram för språken Java och Scala.