Vi presenterar språkmekanismer för polymorfa, extensible register och deras exakta dubbla, polymorfa summor med extensible förstklassiga fall. Dessa funktioner gör det möjligt att enkelt utöka befintlig kod med nya fall. Faktum är att sådana utökningar inte kräver några ändringar av kod som följer en viss programmeringsstil. Med hjälp av den stilen kan enskilda förlängningar skrivas självständigt och senare komponeras för att bilda större komponenter. Dessa språkmekanismer ger en lösning på expressionsproblemen. Vi studerar de föreslagna mekanismerna i samband med en implicit typad, rent funktionellt språk PolyR. Vi ger ett typsystem för språket och ger regler för en tvåfas transformation: först till en explicit typad λ-kalculus med rekordpolymorfism, och slutligen till effektiv index-passing kod. Den första fasen eliminerar belopp och fall genom att dra nytta av dualiteten med register. Vi implementerar en version av PolyR utökad med tvingande funktioner och mönster matchning-vi kallar detta språk MLPolyR. Program i MLPolyR kräver ingen typ annoteringar-implementationen använder en rekonstruktionsalgoritm för att härleda alla typer. Kompilatorn genererar maskinkod (för närvarande för PowerPC) och optimerar representationen av summor genom att eliminera stängningar som genereras av den dubbla konstruktionen.
REF beskriver en analys som stöder extensible register och förstklassiga fall.
Extensible programming with first-class cases
{'venue': "ICFP '06", 'journal': None, 'mag_field_of_study': ['Computer Science']}