A szuperkombinátor egy olyan objektum, amely invariáns a számítási környezethez képest, és dinamikusan alakul ki a program végrehajtása során. A szuperkombinátorok egy kombinatorikus logikába épített tisztán objektumprogramozási rendszert hoznak létre . Ez közvetlenül kielégíti a programnyelvi utasítások denotációs számításának szükségességét, amikor a program funkcionális jelentését objektumok fejezik ki. Lényeges, hogy a számítás valamilyen korábban ismert utasításkészlettel kezdődjön. A program értékének kiszámítása során dinamikusan generálódnak az előre ismeretlen, de az út során szükséges utasítások, amelyeket a programozási rendszerben kiegészítőleg rögzítünk.
A szuperkombinátor olyan matematikai kifejezés, amelyben minden változó összefügg és független más kifejezésektől. Ez lehet egy konstans vagy egy kombinátor, amelyben minden részkifejezés kombinátor.
Formálisan egy S lambda-kifejezést az n aritás szuperkombinátorának tekintjük, ha λx1.λx2…λxn.E alakú (ahol n ≥ 0, tehát a "λ" szimbólumok nem kötelezőek), és az E kifejezés nem lambda-absztrakció. , de minden E-beli absztrakció szuperkombinátor [1] .
Kétféle megközelítés létezik a szuperkombinátorok alkalmazására az alkalmazott programozási nyelvek megvalósítására. Az elsőnél a program összeállítása szuperkombinátorok rögzített halmazával történik (a nem optimalizált változatban - S , K , I ) előre ismert definíciókkal. A második megközelítésben a szuperkombinátorok definícióit maga a program generálja a fordítás során.