A kategorikus absztrakt gép (CAM) egy programszámítási modell [1] , amely megőrzi az applikatív, funkcionális vagy kompozíciós stílus jellemzőit. Az applikatív számítás technikájára támaszkodik .
A funkcionális nyelvek megvalósításának egyik megközelítését a szuperkombinátor alapú gép, vagy David Turner SK-gépe adja . A kategorikus absztrakt gép fogalma alternatív megközelítést kínál[ adja meg ] . A QAM szerkezete szintaktikai, szemantikai és számítási összetevőket tartalmaz[ adja meg ] . A szintaxis a de Bruijn-formalizmuson alapul, melynek használata leküzdi a kötött változók használatából adódó nehézségeket. A szemantika kifejezői lehetőségeiben hasonló az SK-géphez. A számításokat a Landin SECD- gépében használtakhoz hasonló módon hajtják végre . Olyan pozíciókat felvenni[ pontosítás ] A kategorikus absztrakt következetes alapokat ad a szintaxishoz, a szemantikához és a számításelmélethez. Az ilyen integráció nem megy végbe a funkcionális programozási stílus hatása nélkül.
A kategorikus absztrakt gép fogalma az 1980-as évek közepén jelent meg, és a programozók számára a számításelmélet egy változatának szerepét tölti be.[ adja meg ] . Elméleti szempontból a kategorikus absztrakt gépet egy derékszögű zárt kategória képviseli, és elmerül a kombinatorikus logikában . A gépi utasítások kombinátor objektumok, amelyek együtt alkotják a kombinatorikus logika egy speciális változatát - a kategorikus kombinatorikus logikát. A kategorikus absztrakt gép a funkcionális programozási nyelvek világos és matematikailag helyes ábrázolása. Egyenlő kifejezések használatával a gépi kód optimalizálható . Különösen világosak a különféle számítási mechanizmusok - rekurzió , lusta kiértékelés , valamint a paraméterek átadásának mechanizmusai - név szerinti hívás, értékhívás stb. Elméleti szempontból egy kategorikus absztrakt gép megőrzi egy objektum-orientált megközelítés a programozáshoz .
A de Bruijn formalizmus a kötött változók ( formális paraméterek ) átnevezésére szolgáló technika, amely lehetővé teszi a kötési ütközések elkerülését a formális paraméterek ténylegesre cserélésekor. A programkód KAM-on történő fordításánál használatos. Ezt az átnevezési technikát de Bruijn kódolásnak is nevezik , és valójában lehetővé teszi, hogy a λ-kalkulus apparátusát ugyanazon a jogon használjuk, mint a kombinatorikus logika apparátusát .