En superkombinator är ett objekt som är invariant med avseende på datormiljön och som bildas dynamiskt under programexekveringen. Superkombinatorer etablerar ett rent objektprogrammeringssystem inbyggt i kombinatorisk logik . Detta tillfredsställer direkt behovet av denotationsberäkning av instruktioner i programmeringsspråk, när den funktionella betydelsen av programmet uttrycks av objekt. Det är viktigt att beräkningen börjar med någon tidigare känd uppsättning instruktioner. Under beräkningen av programmets värde genereras dynamiskt instruktioner som är okända i förväg, men nödvändiga på vägen, som dessutom är fixerade i programmeringssystemet.
En superkombinator är ett matematiskt uttryck där alla variabler är relaterade och oberoende av andra uttryck. Det kan vara en konstant eller en kombinator där alla deluttryck är kombinatorer.
Formellt anses ett lambdauttryck S vara en superkombinator av aritet n om det har formen λx1.λx2…λxn.E (där n ≥ 0, så symbolerna "λ" är valfria), och uttrycket E inte är en lambdaabstraktion , men varje abstraktion i E är en superkombinator [1] .
Det finns två sätt att använda superkombinatorer för att implementera applikativa programmeringsspråk. Med den första av dem kompileras programmet med hjälp av en fast uppsättning superkombinatorer (i den icke-optimerade versionen - S , K , I ) med förkända definitioner. I det andra tillvägagångssättet genereras definitionerna av superkombinatorer av programmet självt under kompileringen.