Där A! B kartor till (!A)? B och en annan där det kartor till!(A? Denna förordning träder i kraft den tjugonde dagen efter det att den har offentliggjorts i Europeiska unionens officiella tidning. Vi beskriver hur dessa översättningar fungerar på villkor och visar att den första motsvarar en call-by-name-kalkyl, medan den andra motsvarar call-by- value. Vi visar vidare att om målet för översättningen antas vara en affin analys, där! kontrollerar sammandragning men försvagning är tillåtet överallt, då den andra översättningen motsvarar en call-by-need calculus, som nyligen definierats av Ariola, Felleisen, Maraist, Odersky och Wadler. Således kan de olika anropsmekanismerna förklaras i termer av logiska översättningar, föra dem in i omfattningen av Curry-howard isomorphism. Våra resultat sträcker sig prydligt till översättningar av förlängningar för rekursion i call-by-name och call-by- value calculi, och i allmänhet till förlängningar för produkter och för motsvarande otypade system. Gordon Plotkin, i "Call-by-name, call-by- value och -calculus" [30], visade hur två olika anropsmekanismer kunde förklaras med två olika översättningar till fortsättning-passing stil. På den tiden Plotkin skrev, den callby-värde översättningen var allmänt uppskattad, men call-by-name översättningen var mindre känd. I synnerhet återupptäcktes call-by- value översättningen flera gånger (enligt Reynolds [31], medan call-by-name översättningen verkar ha varit känd endast för Plotkin och Reynolds (den förra krediterar det till den senare). Samtidigt som vi tvekar att jämföra vårt arbete med Plotkins, är vårt mål här något liknande. Vi visar hur de två olika samtalsmekanismerna kan förklaras med två olika översättningar till linjär logik. På den tiden vi skriver, är call-by-name översättningen allmänt uppskattad, men call-by- value översättningen är mindre känd. I många presentationer av logik spelar strukturella regler en nyckelroll: sammandragning är det enda sättet att duplicera ett antagande, medan försvagning är det enda sättet att kasta bort en. I linjär logik [14] uppenbaras närvaron av sammandragning eller försvagning i en formel genom närvaron av "naturligtvis" bindväv, skrivet "!". Enhetslogiken [15] tar denna åtskillnad ett steg längre genom att särskilja linjära antaganden, som man inte kan dra ihop eller försvaga, från icke-linjära eller intuitionistiska antaganden, som man kan göra. Motsvarar Girards första översättning definierar vi en kartläggning från call-by- Mackie [23] har också observerat att den första översättningen motsvarar call-by-name och den andra till call-by-Value. (Han säger också att dessa observationer är vanliga i litteraturen, men han ger inga referenser och vi har inte kunnat hitta några.) Mackies arbete kompletterar vårt eget. Våra översättningar är till en linjär lambdakalkyl, motsvarande intuitionistisk linjär logik, medan Mackies trans-
Vår syntax är inspirerad av inbäddningen av callby-värde-kalkylen i den linjära lambda-kalkylen REF, där call-by-värde-funktionen typ A → B översätts till!(A B) (återkalla att funktionstyper i vår korsning typ system är i (τ i → σ i )).
Call-by-Name, Call-by-Value, Call-by-Need, and the Linear Lambda Calculus
{'venue': None, 'journal': None, 'mag_field_of_study': ['Mathematics', 'Computer Science']}