• Non ci sono risultati.

Fondamenti di Linguaggi di Programmazione Esercitazione in aula sui tipi

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Linguaggi di Programmazione Esercitazione in aula sui tipi"

Copied!
1
0
0

Testo completo

(1)

Fondamenti di Linguaggi di Programmazione

Esercitazione in aula sui tipi Esercizio 1

Definire il tipo del seguente termine

t = rec f.λx.(λy.3 (f x)) Soluzione:

Applicando la regola di rec si ha che per un tipo appropriato τ ,

f : τ λx.(λy.3 (f x)) : τ

rec f.λx.(λy.3 (f x)) : τ

Per la regole sulla funzioni λ, per appropriati tipi τ1e τ2si ha che

. x : τ1 (λy.3 (f x)) : τ2

f : τ1→ τ2 ≡ τ λx.(λy.3 (f x)) : τ1→ τ2 ≡ τ rec f.λx.(λy.3 (f x)) : τ

Per la regole sulle coppie, per appropriati tipi τ3 e τ4si ha che

. λy.3 : τ3 → τ4 (f x) : τ3

. . x : τ1 (λy.3 (f x)) : τ4 ≡ τ2

f : τ1→ τ2 ≡ τ λx.(λy.3 (f x)) : τ1→ τ2 ≡ τ rec f.λx.(λy.3 (f x)) : τ

Siccome λy.3 : τ3 → τ4, per la regola di tipo sulle funzioni λ, si ha che y deve essere di tipo τ3, e τ4 di tipo int. Inoltre, ricordando che x ´e stato gi´a definito di tipo τ1, dovendo (f x) essere di tipo τ3, per le regole di tipo delle coppie, f deve essere di tipo τ1 → τ3. Dunque, applicando le relative regole per la funzione λ e la coppia (f x) abbiamo che

. y : τ3 3 : int f : τ1 → τ3 x : τ1

. .. λy.3 : τ3 → τ4 (f x) : τ3

. x : τ1 (λy.3 (f x)) : τ4 ≡ τ2 ≡ int f : τ1→ τ2 ≡ τ λx.(λy.3 (f x)) : τ1→ τ2 ≡ τ

rec f.λx.(λy.3 (f x)) : τ

Siccome abbiamo gi´a detto che f : τ1 → τ2, allora τ3≡ τ2≡ int. In definitiva, abbiamo che t : τ1→ int dove τ1 = type(x)

1

Riferimenti

Documenti correlati

Siccome le regole specificano il significato delle espressioni in modo operazionale, si dice che esse definiscono una semantica operazionale di tali espressioni. Alcune regole

Induzione matematica e strutturale sono casi particolari di un potente metodo di prova chiamato induzione ben fondata In questa lezione vedremo in dettaglio:. ¾ Induzione

Supponiamo di voler estendere le espressioni aritmetiche di IMP includendo un nuovo operatore “^” con il significato di elevamento a potenza. La sintassi di Aexp di IMP verrà

Negli anni sessanta, Christopher Strachey e Dana Scott riuscirono a superare le limitazioni della semantica operazionale introducendo una semantica più astratta basata sull’utilizzo

La sintassi specifica sia la struttura lessicale del linguaggio (come costruire le parole a partire dai caratteri dell’alfabeto) sia le regole per la costruzione delle

Si noti che nel comando if, comunque sia valutato b in σ’, esso viene interrotto dopo l’esecuzione di c e dunque in questo caso <w,σ> è valutato σ’ sse <if,σ>.

Passo induttivo: supponendo che l’asserto sia vero per un albero di derivazione alto n e per n cicli di valutazioni nella denotazione del while (con n > 0, quindi anche per

L'iterazione ed il singolo ciclo terminano non appena viene incontrata una espressione booleana che valuta a falso”. Verificare che le due semantiche