Partialevaluering : Specialisering av program  Utformning av en laboration

Detta är en Kandidat-uppsats från Linköpings universitet/Institutionen för datavetenskapLinköpings universitet/Tekniska högskolan

Författare: Alexander Binggeli; [2012]

Nyckelord: Partialevaluering; Laborationsunderlag;

Sammanfattning: Partialevaluering av program är ett intressant ämne både för att optimera programmen men även för möjligheterna att kompilera program med en interpretator. Denna rapport beskriver hur laborationerna i kursen Data och Programstrukturer på Linköpings Universitet, som är helt baserad på Abelson & Sussmans bok Structure and Interpretation of Computer Programs kan utökas så att den även går igenom partialevaluering. Som grund i laborationsunderlaget ligger en enkel partialevaluator för en delmängd av det funktionella språket Scheme som utvecklas för underlaget. Rapporten består i huvudsak av tre delar, i början introduceras läsaren till partialevaluering. Vi förklarar hur man av ett generellt program och viss känd information vill skapa ett nytt specialiserat program. Två vanliga metoder att göra partialevaluering på beskrivs men i första hand fokuserar rapporten på den metod som implementerats, nämligen offline metoden. Specialisering av ett program med en offline partialevaluator börjar med en analys av programmet som sedan specialiseras. Vi går igenom varje steg i analysen och specialiseringen innan implementationen introduceras. I den andra delen av rapporten tittar vi närmre på den implementation som kommer användas I laborationsuppgifterna. Genom att beskriva språket som specialiseras och titta på kod för de funktioner som är intressanta förklaras hur partialevaluatorn fungerar. Tillslut presenteras fem förslag på uppgifter kring några ämnen och problem som passar I laborationskursen. Uppgifterna försöker följa en liknande ordning som tidigare uppgifter i kursen. Vi börjar med en uppgift där man testar partialevaluatorn och undersöker resultatet av specialisering. Sedan följer tre uppgifter som tittar på hur funktionaliteten i partialevaluatorn kan utökas. Den sista uppgiften fokuserar på hur man kan kompilera ett mönster till en mönstermatchare med en partialevaluator.

  HÄR KAN DU HÄMTA UPPSATSEN I FULLTEXT. (följ länken till nästa sida)