En lektion som lärts smärtsamt under de senaste tjugo åren är den farliga interaktionen mellan Curry-stil maskinskrivning med utvärderingsordning och biverkningar. Detta ledde så småningom till värdebegränsningen på polymorfism i ML, liksom, på senare tid, till liknande artefakter i typsystem för ML med skärningspunkt och fackförfining typer. Till exempel är en del av de traditionella undertyperingslagarna för fackföreningar och korsningar osunda i närvaro av effekter, medan fackeliminering kräver en utvärderingskontextbegränsning utöver värdebegränsningen för intersektionsintroduktion. Vårt mål är att visa att i stället för att vara ad hoc-artefakter uppstår fenomen som värde- och utvärderingskontextrestriktioner naturligt i typsystem för effektiva språk, av dualitetsprinciper. Med början i en genomgång av det senaste arbetet med CurryHoward-tolkningen av fokuseringsproof som mönstermatchningsprogram, förklarar vi hur man tolkar skärnings- och föreningsförfiningar på dessa program, och hur man logiskt kan härleda subtypningsförhållandet via en identitetstvångstolkning. Värdebegränsningen, etc., framgår av denna analys. Denna abstrakta redogörelse ger dock inte omedelbart ett system av decimerbar typ, huvudsakligen på grund av att syntaxen är oändlig – både "oändligt bred" och "oändligt djup". Vi visar hur man mekaniskt konstruerar en finitär syntax genom att tillämpa två välkända PL-tekniker-mönsterkompilering och defunktionalisering-och avsluta med att ge denna finitär syntax en algoritmisk förfining typ system. Parallellt med texten beskriver vi en inbäddning i det beroendeframkallande funktionella språket Agda, både för att klargöra dessa idéer, och även för att formalisering var en viktig vägledning för att utveckla dem. Som ett exempel, Agda-kodningen delas mycket naturligt i en inneboende ("Church") vy av välskrivna program, och en extrinsisk ("Curry") vy av förfining skriva för dessa program.
Zeilberger REF föreslog en principiell design av skärningstypen systemet baserat på idén från fokus bevis [1].
Refinement types and computational duality
{'venue': "PLPV '09", 'journal': None, 'mag_field_of_study': ['Computer Science']}