Sammanfattning av denna webbsida: Det har funnits ett stort intresse för logiska programmeringsspråk under de senaste åren. Detta beror till stor del på de fördelar som dessa språk erbjuder: deklarativa avläsningar av program och separation av programlogik från kontroll. Men logiska program kan ofta vara förfärande ineffektiva. Den vanliga lösningen på detta problem har varit att returnera viss kontroll till användaren i form av orena språkfunktioner som skär. Tyvärr resulterar detta ofta i förlust av just de funktioner som gjorde logik programmering attraktiv i första hand. Vi hävdar att det inte är nödvändigt att tillgripa sådana orena egenskaper för effektivitet. Denna punkt illustreras genom att överväga hur de flesta av de vanliga användningarna av skär kan elimineras från Prolog källkodsprogram, förlitar sig på statisk analys för att generera dem vid kompileringstid. Tre vanliga situationer där snittet används beaktas. Statiska analystekniker ges för att upptäcka sådana situationer, och tillämpliga program transformationer beskrivs. Vi föreslår också två språkkonstruktioner, för det första och för det andra, för situationer där "'inte bryr sig'' om icke-determinism. Dessa konstruktioner har bättre deklarativa avläsningar än nedskärningen, och sträcker sig bättre till parallella utvärderingsstrategier. Tillsammans resulterar dessa förslag i ett system där användarna behöver förlita sig mycket mindre på nedskärningar för effektivitet och därigenom främja en renare programmeringsstil utan att offra effektiviteten.
Författarna till REF överväger hur de flesta av de vanliga användningarna av skär kan elimineras från Prolog source-program, genom att förlita sig på statisk analys för att generera dem vid kompileringstid.
Towards banishing the cut from Prolog
{'venue': 'IEEE Trans. on Software Engineering', 'journal': None, 'mag_field_of_study': ['Computer Science']}