Hva er en førsteklasses funksjon?
"Førsteklasses funksjon" er et begrep som kan brukes i dataprogrammering og informatikk på et dataprogrammeringsspråk hvis behandlingen av funksjoner holder seg til et sett med retningslinjer, selv om hele omfanget og dybden av disse retningslinjene ikke er formelt avtalt. For å ha et førsteklasses funksjonsprogrammeringsspråk, er hovedfunksjonen som må støttes muligheten til å passere funksjoner som argumenter til andre funksjoner. En funksjon må også kunne tilordnes en variabel slik at den kan lagres. Andre egenskaper som brukes til å bestemme hva som utgjør en førsteklasses funksjon inkluderer evnen til å dynamisk generere en funksjon ved kjøretid og språkets evne til å ha en funksjon som en returverdi av en annen funksjon. Språk som støtter førsteklasses funksjonsarkitektur gir mulighet for et høyt abstraksjonsnivå og gir i noen tilfeller en mekanisme for dynamisk kodegenerering av kjøretid.
Når begrepet "funksjon" brukes i en løst definert forstand, er konseptet med å passere en funksjon i et program gjennom variabler ikke nødvendigvis unikt for språk som ikke implementerer førsteklasses funksjonsstøtte. Muligheten til å overføre kodeblokker til funksjoner, eller å returnere ikke-dynamiske kode fra en funksjon, kan enkelt gjøres på mange programmeringsspråk gjennom forskjellige mekanismer. En av de strenge delene av definisjonen av et førsteklasses funksjonsspråk er imidlertid at håndteringen av funksjoner som variabler må gjøres innfødt, uten bruk av metadata som betingede definisjoner og uten å ringe en kompilator for å kompilere et stykke kode. Begrepet "funksjon" brukes også til å referere til uavhengige kodeblokker som kalles på egen hånd, noe som betyr at de ikke inkluderer kodeblokkene kjent som metoder i objektorienterte programmeringsspråk eller blokkene som noen ganger kalles prosedyrer på andre språk.
Når et språk erNoen designmønstre er designet for å tillate førsteklasses funksjonskode, og kan implementeres mer direkte enn på andre språk. En funksjon kan motta en funksjon som en variabel, og deretter konstruere en ny funksjon og returnere den nye funksjonen til anropskoden, så dette skaper en mekanisme for å lage kjøretidsoppretting av programkode. Dette kan også gjøre bruken av sanntids brukerinjusterte funksjoner mulig i språket uten bruk av prosesser som refleksjon eller evaluering.
Noen av de mest grunnleggende bruksområdene for førsteklasses funksjonsarkitektur inkluderer å lage generiske funksjoner som enkelt kan gjenbrukes og implementere rekursive matematiske algoritmer som er i stand til å modifisere ligningene sine selv når de utvikler seg. En lignende, mer avansert bruk for førsteklasses mekanismer er implementeringen av polymorfisme i språk der den ikke er spesifikt implementert. Dette kan tillate at funksjoner kan kalles med samme funksjonssignatur, men utfør kode basert på konteksten i WHICH ble det kalt, noen ganger ved å overføre en nøkkelfunksjon til den polymorfe funksjonen.