Hvad er en førsteklasses funktion?
"Første klassefunktion" er et udtryk, der kan anvendes i computerprogrammering og datalogi på et computerprogrammeringssprog, hvis dens behandling af funktioner overholder et sæt retningslinjer, selvom det fulde omfang og dybde af disse retningslinjer ikke formelt er aftalt. For at have et førsteklasses funktions computerprogrammeringssprog er den vigtigste funktion, der skal understøttes, muligheden for at videregive funktioner som argumenter til andre funktioner. En funktion skal også kunne tildeles en variabel, så den kan gemmes. Andre egenskaber, der bruges til at bestemme, hvad der udgør en førsteklasses funktion, inkluderer evnen til dynamisk at generere en funktion ved kørsel og sprogets evne til at have en funktion som en returværdi af en anden funktion. Sprog, der understøtter førsteklasses funktionsarkitektur, giver mulighed for et højt abstraktionsniveau og giver også i nogle tilfælde en mekanisme til dynamisk kodegenerering af kørsel.
Når udtrykket "funktion" bruges i en løst defineret forstand, er konceptet med at videregive en funktion inden for et program gennem variabler ikke nødvendigvis unikt for sprog, der naturligt implementerer førsteklasses funktionsstøtte. Evnen til at videregive blokke af kode til funktioner eller til at returnere ikke-dynamisk kode fra en funktion kan let udføres på mange programmeringssprog gennem forskellige mekanismer. En af de strenge dele af definitionen af et førsteklasses funktionssprog er imidlertid, at håndteringen af funktioner som variabler skal udføres naturligt uden brug af metadata, såsom betingede definitioner og uden at kalde en kompilator til at omkompilere et stykke kode. Udtrykket "funktion" bruges også til at henvise til uafhængige kodeblokke, der kaldes på egen hånd, hvilket betyder, at de ikke inkluderer kodeblokkene, der er kendt som metoder i objektorienterede programmeringssprog eller de blokke, der undertiden kaldes procedurer på andre sprog.
når et sprog erNogle designmønstre er designet til at tillade førsteklasses funktionskode og kan implementeres mere direkte end på andre sprog. En funktion kan modtage en funktion som en variabel og derefter konstruere en ny funktion og returnere den nye funktion til opkaldskoden, så dette skaber en mekanisme til kørselstid oprettelse af programkode. Dette kan også gøre brugen af realtids-brugerinputede funktioner mulige inden for sproget uden brug af processer såsom refleksion eller evaluering.
Nogle af de mest basale anvendelser til førsteklasses funktionsarkitektur inkluderer oprettelse af generiske funktioner, der let kan genbruges og implementere rekursive matematiske algoritmer, der er i stand til at selv modificere deres ligninger, når de skrider frem. En lignende, mere avanceret anvendelse til førsteklasses mekanismer er implementeringen af polymorfisme på sprog, hvor den ikke er specifikt implementeret. Dette kan tillade, at funktioner kaldes med den samme funktionssignatur, men udfør kode baseret på konteksten i WHICH Det blev kaldt, undertiden ved at videregive en nøglefunktion til den polymorfe funktion.