Return to search

Implementation och utökning av en typhärledningsalgoritm för Common Lisp

<p>Programmeringsspråk har oftast ett typsystem och kan välja att använda olika statiska verktyg att analysera koden. Statiska språk utför typkontroller innan körtillfället och kan då ge garantier att typfel inte kan förekomma, dynamiska språk gör däremot dessa kontroller under körtillfället och om ett dåligt beteende upptäcks avbryts programmet.</p><p>Eftersom kontrollerna görs under körtillfället skrivs inte typsignaturer ut i dynamiska språk. Ett dynamiskt språk kan vara mer flexibelt än ett statiskt språk eftersom inga garantier ges. Eftersom inga typsignaturer skrivs ut går det att skriva program på ett mer koncist sätt. I statiska språk tvingas oftast användaren att skriva ut typerna explicit för variabler och funktioner.</p><p>Typhärledning är processen att härleda typer för uttryck. En typhärledningalgoritm kommer att undersökas, hur kraftfull algoritmen är samt hur algoritmen kan utökas för att klara av flera konstruktioner och ett kraftfullare språk. Typhärledningsalgoritmen kommer att implementeras för Common Lisp. Common Lisp ger inga typgarantier och inga typsignaturer skrivs ut. Alla typer kommer att härledas vilket innebär att vi gör om en delmängd av Common Lisp till ett statiskt språk.</p><p>Algoritmen kommer att utökas för att klara av polymorfism, closures, listor och par. Rapporten undersöker vilka ändringar som behöver göras för att stödja konstruktionerna, hur vi kan göra ändringarna hur de kan implementeras.</p><p>Fördelar med att ha typhärledning är att användaren slipper skriva ut typsignaturer och kan få ökad produktivitet. Den mest generella typsignaturen kommer alltid att härledas och funktioner som är polymorfa kommer att upptäckas automatiskt. Typhärledningsalgoritmen kommer att även typkontrollera programmet, och kan ge garantier att inga problem kommer att uppstå. Verktyget kommer även att skapa ett nytt program med typsignaturer utskrivna som kompilatorn kan använda för att generera effektivare kod.</p>

Identiferoai:union.ndltd.org:UPSALLA/oai:DiVA.org:liu-57819
Date January 2010
CreatorsStåhlberg, Simon
PublisherLinköping University, Department of Computer and Information Science
Source SetsDiVA Archive at Upsalla University
LanguageSwedish
Detected LanguageSwedish
TypeStudent thesis, text

Page generated in 0.0064 seconds