Skrivregel

I typteorin är en typningsregel en inferensregel som beskriver hur ett typsystem tilldelar en typ till en syntaktisk konstruktion. Dessa regler kan tillämpas av typsystemet för att avgöra om ett program är välskrivet och vilka typuttryck som har. Ett prototypiskt exempel på användningen av skrivregler är att definiera typinferens i den enkelt skrivna lambdakalkylen, som är det interna språket för kartesiska slutna kategorier .

Notation

Skrivregler anger strukturen för en skrivrelation som relaterar syntaktiska termer till deras typer. Syntaktiskt betecknas typningsrelationen vanligtvis med ett kolon, så till exempel anger att ett uttryck har typen . Reglerna i sig specificeras vanligtvis med beteckningen naturlig deduktion . Till exempel anger följande skrivregler skrivrelationen för ett enkelt språk med booleska språk :

Varje regel anger att slutsatsen under linjen kan härledas från premisserna ovanför linjen. De två första reglerna har inga premisser ovanför linjen, så de är axiom . Den tredje regeln har premisser ovanför linjen (specifikt tre premisser), så det är en slutledningsregel .

I programmeringsspråk beror typen av variabel på var den är bunden , vilket kräver kontextkänsliga skrivregler. Dessa regler ges av en skrivbedömning \ , vanligtvis skriven som anger att ett uttryck har typen under en skrivkontext som relaterar variabler till deras typer. Denna notation kan användas för att ge skrivregler för variabelreferenser och lambdaabstraktion i den enkelt skrivna lambdakalkylen :

På liknande sätt beskriver följande skrivregel -konstruktionen av Standard ML :

Inte alla system med skrivregler anger direkt en typkontrollalgoritm . Till exempel kräver skrivregeln för att applicera en parametriskt polymorf funktion i Hindley-Milner-typsystemet " gissa" den lämpliga typen vid vilken funktionen ska instansieras. Att anpassa ett deklarativt regelsystem till en avgörbar algoritm kräver produktion av ett separat, algoritmiskt system som kan bevisas specificera samma typningsrelation.

Se även

Vidare läsning