Sei sulla pagina 1di 1

1

Prova scritta di Linguaggi - 04.07.2011 (prof. Merro)


Si consideri il linguaggio funzionale Lang : E Lang ::= x true false E1 or E2 E E1 E2

let x = E1 in E2

fun(x : T ) E

1. (6 punti) Formalizzare la statica del linguaggio Lang fornendo un sistema di tipi con giudizi della forma E : T , per appropriati tipi T deniti dal candidato. 2. (6 punti) Una volta denito il sistema di tipi, dire, giusticando formalmente la risposta, se il termine let x = (fun(f1 :T1 ) f1 false) (fun(f2 :T2 ) (fun(f3 :T3 ) f3 f2 )false) in x ` e ben tipato o meno, al variare dei tipi T1 , T2 e T3 . 3. (6 punti) Formalizzare la dinamica del linguaggio tipato Lang attraverso una semantica small-step in stile call-by-name, cbn . Denire, per differenza, una semantica big-step in stile call-by-value , cbv . 4. (6 punti) Proporre una semantica comportamentale per il linguaggio tipato e fornire almeno tre leggi algebriche valide e tre non valide. 5. (6 punti) Si consideri la versione non-tipata del linguaggio. La si estenda con un costrutto che segnali il fallimento della computazione ogni qual volta si tenti di computare un termine che non sia ben tipato rispetto al sistema di tipi fornito nel punto 2. Si estenda la semantica operazionale del linguaggio non tipato esteso con tale costrutto. 6. (3 punti) Descrivere formalmente cosa si intende nella teoria dei linguaggi di programmazione con: Consistency property Determinacy property Progress property Preservation property.

Potrebbero piacerti anche