Polytypisk programmering är ett sätt att definiera typindexerade operationer, såsom karta, vik och zip, baserat på typinformation. Run-time polytypisk programmering gör att typinformation för att dynamiskt beräkna-detta stöd är viktigt i moderna programmeringsspråk som stöder separat sammanställning, förstklassig typ abstraktion, eller polymorfisk rekursion. I tidigare arbete definierade vi dock run-time polytypisk programmering med en typpasserande semantik. Även om det är naturligt att definiera polytypiska program som fungerar över förstklassiga typer, en sådan semantik lider av ett antal nackdelar. I detta dokument beskrivs hur man omarbetar arbetet i en type-erasure semantics, där termer representerar typinformation på ett säkert sätt. Det resulterande språket är enkelt och enkelt att implementera-vi presenterar en prototyp implementation av den nödvändiga maskinen som ett litet Haskell bibliotek. Vissa funktioner definieras naturligt av typstrukturen i deras argument. Till exempel kan en polytypisk vacker skrivare formatera vilken datastruktur som helst genom att använda typinformation för att bryta ner den i grundläggande delar. Utan en sådan mekanism måste man skriva separata vackra skrivare för alla datatyper och ständigt uppdatera dem när datatyper utvecklas. Polytypisk programmering förenklar underhållet av programvara genom att göra det möjligt för funktioner att automatiskt anpassa sig till förändringar i representationen av data. Andra klassiska exempel på polytypiska operationer är reduktioner, jämförelsefunktioner och kartfunktioner. Teorin bakom sådana operationer har utvecklats inom en rad olika ramar (Abadi et al., 1991; Abadi et al., 1995; Crary & Weirich, 1999; Dubois et al., 1995; Hinze, 2000; Jansson & Jeuring, 1997; Jay et al., 1998; Ruehr, 1998; Sheard, 1993; Trifonov et al., 2000; Wadler & Blott, 1989). Många av dessa ramverk genererar polytypiska operationer vid kompileringstid genom en käll-till-källa översättning som bestäms av statisk typ information. I motsats till detta definierar run-time polytypisk programmering (även kallad högre-order intensiv typanalys (Weirich, 2002a)) polytypisk verksamhet med run-time analys av dynamisk typ information. Run-time typ analys har två fördelar jämfört med statiska former av polytypism: För det första, run-time analys kan indexera polytypiska operationer efter typer som
För att motivera ett programmeringsspråk som möjliggör explicit manipulation och analys av typuttryck på ett maskinskrivet sätt använder Weirich REF en generisk rangeringsfunktion som rekursivt analyserar typen av värde.
Type-Safe Run-time Polytypic Programming
{'venue': 'J. Funct. Program.', 'journal': 'J. Funct. Program.', 'mag_field_of_study': ['Computer Science']}