Kopplingen mellan polymorf och dynamisk typning övervägdes ursprungligen av Curry, et al. i form av tilldelning av "polymorf typ" för otypade λ-termer. Typer tilldelas efter det faktum att vad som, i modern terminologi, är ett dynamiskt språk. Intresset för typuppdrag återupplivades av Brachas förslag, etc. och Bank, etc. att berika Java med polymorfism (generik), som i sin tur utlöste utvecklingen av andra språk, såsom Scala, med liknande kombinationer av funktioner. I denna miljö är det önskvärt att sammanställa polymorfism till dynamisk maskinskrivning på ett sådant sätt att så mycket statisk maskinskrivning som möjligt bevaras, beroende på dynamik endast i den mån det faktiskt krävs genericitet. Även om detta tillvägagångssätt verkar intuitivt rimligt, har vi funnit det förvånansvärt svårt att säga och bevisa dess riktighet. För att få grepp om svårigheterna studerar vi sammanställningen av System F till en förlängning av PCF med en dynamisk typ, dyn. Inspirerad av Meyer och Wand's bevis på korrekthet för CPS transform, är en naturlig strategi att etablera en inbäddning av alla typer i typ dyn, och att använda motsvarande projektion vid lämpliga punkter för att återvinna det inbäddade värdet. Man skulle sedan använda denna inbäddning för att fastställa ett logiskt samband mellan källan och målspråken för att få ett observationslikvärdigt resultat för sammanställningen. Förvånansvärt nog verkar detta tillvägagångssätt inte vara tillämpligt på den nuvarande situationen, och vi har i stället utarbetat ett alternativ, även baserat på logiska relationer, för att fastställa riktigheten i sammanställningen.
REF bevisar riktigheten i att sammanställa polymorfism till dynamisk typning med inbäddningar och partiella projektioner; sammanställningsinställningen skiljer sig dock avsevärt från gradvis typning.
Correctness of Compiling Polymorphism to Dynamic Typing
{'venue': 'J. Funct. Program.', 'journal': 'J. Funct. Program.', 'mag_field_of_study': ['Computer Science']}