Come leggere le regole di battitura?


18

Ho iniziato a leggere sempre più documenti di ricerca linguistica. Lo trovo molto interessante e un buon modo per saperne di più sulla programmazione in generale. Tuttavia, di solito arriva una sezione in cui ho sempre delle difficoltà (prendiamo ad esempio la terza parte di questo ) dal momento che mi manca lo sfondo teorico nell'informatica: Type Rules.

Ci sono buoni libri o risorse online disponibili per iniziare in questo settore? Wikipedia è incredibilmente vaga e non aiuta davvero un principiante.


1
Hai letto l'articolo collegato sulle regole di inferenza ?
Raffaello

2
TAPL di Benjamin Pierce è davvero buono.
Gilles 'SO- smetti di essere malvagio'

Risposte:


25

Nella maggior parte dei sistemi di tipi, le regole di tipo lavorano insieme per definire giudizi del modulo:

Γe:τ

Ciò afferma che nel contesto l'espressione e ha tipo τ . Γ è una mappatura delle variabili libere di e ai loro tipi.Γeτ
Γe

Un sistema di tipi consisterà in un insieme di assiomi e regole (un sistema formale di regole di inferenza , come sottolinea Raffaele).

Un assioma ha la forma

Γe:τ

Questo afferma che il giudizio regge (sempre).Γe:τ

Un esempio è

X:τX:τ

che afferma che presupponendo che il tipo di variabile sia τ , quindi l'espressione x ha tipo τ .XτXτ

Le regole di inferenza prendono fatti che sono già stati determinati e ne ricavano fatti più grandi. Ad esempio la regola di inferenza

Γe1:ττ'Γe2:τΓe1 e2:τ'

dice che se ho una derivazione del fatto e una derivazione del fatto Γ e 2 : τ , allora posso ottenere una derivazione del fatto Γ e 1 e 2 : τ . In questo caso, questa è la regola per digitare l'applicazione delle funzioni.Γe1:ττ'Γe2:τΓe1 e2:τ'

Esistono due modi per leggere questa regola:

  • top-down - date due espressioni (una funzione e un'altra espressione) e alcuni vincoli sul loro tipo, possiamo costruire un'altra espressione (l'applicazione della funzione all'espressione) con il tipo dato.
  • bottom-up - data un'espressione che è, in questo caso, l'applicazione di una funzione a qualche espressione, il modo in cui questa è digitata è innanzitutto digitando le due espressioni, assicurando che i loro tipi soddisfino alcuni vincoli, vale a dire che la prima è una tipo di funzione e che il secondo ha il tipo di argomento della funzione.

Alcune regole di inferenza manipolano anche aggiungendo nuovi ingredienti (vista dal basso verso l'alto). Ecco la regola per λ -abstraction:Γλ

ΓX:τe:τ'ΓλX.e:ττ'

Le regole di inferenza vengono applicate induttivamente in base alla sintassi dell'espressione considerata per formare un albero di derivazione. Alle foglie dell'albero (in alto) ci saranno gli assiomi e i rami si formeranno applicando regole di inferenza. Nella parte inferiore dell'albero c'è l'espressione che ti interessa scrivere.

Ad esempio, una derivazione della tipizzazione dell'espressione èλf.λX.f X

Due libri molto validi per l'apprendimento dei sistemi di tipi sono:

f:ττ',X:τf:ττ'f:ττ',X:τX:τf:ττ',X:τf X:τ'f:ττ'λX.f X:τ'λf.λX.f X:τ'

Entrambi i libri sono molto completi, ma iniziano lentamente, costruendo solide basi.



5

In quella pagina di Wikipedia si consiglia " Type Systems, Luca Cardelli, ACM Computing Surveys ", che è un sondaggio di 2 pagine che può aiutarti a capire come leggere una regola. Ad ogni modo, come leggere una regola è spiegato perfettamente in quella pagina di Wikipedia (o ancora meglio nel sondaggio di 2 pagine). Tuttavia, per comprendere il tutto, è necessario comprendere cos'è un sistema di battitura (composto da diverse regole), per il quale il " Sistema di tipi articolo di Wikipedia " " è un buon inizio (e hai diversi libri nella sezione " Riferimenti " di quello pagina se vuoi andare oltre).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.