En superkombinator er et objekt, der er invariant i forhold til computermiljøet og dannes dynamisk under programafvikling. Superkombinatorer etablerer et rent objektprogrammeringssystem indbygget i kombinatorisk logik . Dette opfylder direkte behovet for denotationsberegning af instruktioner i programmeringssprog, når den funktionelle betydning af programmet udtrykkes af objekter. Det er vigtigt, at beregningen begynder med nogle tidligere kendte instruktioner. I processen med at beregne værdien af programmet genereres der dynamisk instruktioner, der er ukendte på forhånd, men nødvendige undervejs, som yderligere er fastgjort i programmeringssystemet.
En superkombinator er et matematisk udtryk, hvor alle variabler er relaterede og uafhængige af andre udtryk. Det kan være en konstant eller en kombinator, hvor alle underudtryk er kombinatorer.
Formelt betragtes et lambdaudtryk S som en superkombinator af arity n, hvis det har formen λx1.λx2…λxn.E (hvor n ≥ 0, så symbolerne "λ" er valgfrie), og udtrykket E ikke er en lambdaabstraktion , men enhver abstraktion i E er en superkombinator [1] .
Der er to tilgange til at bruge superkombinatorer til at implementere applikative programmeringssprog. Med den første af dem er programmet kompileret ved hjælp af et fast sæt superkombinatorer (i den ikke-optimerede version - S , K , I ) med forudkendte definitioner. I den anden tilgang genereres definitionerne af superkombinatorer af selve programmet under kompilering.