Den kategoriska abstrakta maskinen (CAM) är en programberäkningsmodell [1] , som bevarar egenskaperna hos den applikativa, funktionella eller kompositionsstilen. Den bygger på tekniken för applikativ beräkning .
En metod för implementering av funktionella språk ges av den superkombinatorbaserade maskinen, eller David Turners SK-maskin . Föreställningen om en kategorisk abstrakt maskin ger ett alternativt tillvägagångssätt[ specificera ] . Strukturen för QAM inkluderar syntaktiska, semantiska och beräkningskomponenter[ specificera ] . Syntaxen är baserad på de Bruijn-formalismen, vars användning övervinner svårigheten som orsakas av användningen av bundna variabler. Semantik liknar SK-maskinen i sina uttrycksmöjligheter. Beräkningarna utförs på ett sätt som liknar de som används i Landins SECD- maskin . Att ta sådana positioner[ förtydliga ] Det kategoriska abstraktet ger konsekventa grunder för syntax, semantik och beräkningsteori. Sådan integration sker inte utan påverkan av funktionell programmeringsstil.
Konceptet med en kategorisk abstrakt maskin dök upp i mitten av 1980-talet och spelar rollen som en variant av beräkningsteorin för programmerare.[ specificera ] . Ur en teoretisk synvinkel representeras en kategorisk abstrakt maskin av en kartesisk sluten kategori och är nedsänkt i kombinatorisk logik . Maskininstruktioner är kombinatorobjekt, som tillsammans bildar en speciell variant av kombinatorisk logik - kategorisk kombinatorisk logik. Den kategoriska abstrakta maskinen är en tydlig och matematiskt korrekt representation av funktionella programmeringsspråk. Med hjälp av lika uttryck kan maskinkod optimeras . Särskilt tydliga är de olika beräkningsmekanismerna - rekursion , lat utvärdering , - liksom mekanismerna för att skicka parametrar - call by name, call by value, etc. Ur en teoretisk synvinkel behåller en kategorisk abstrakt maskin alla fördelarna med en objektorienterat förhållningssätt till programmering .
De Bruijn- formalismen är en teknik för att byta namn på bundna variabler ( formella parametrar ), som gör att du kan undvika bindningskollisioner när du ersätter formella parametrar med faktiska. Den används vid kompilering av programkod på KAM. Denna omdöpningsteknik kallas också för de Bruijn-kodning och den tillåter faktiskt att apparaten för λ-kalkylen används med samma rättigheter som apparaten för kombinatorisk logik .