A.A. 2000-01

Linguaggi di Programmazione II: Paradigmi Prova scritta del 10 gennaio 2001

Esercizio 1. Quanti sono gli elementi dell’insieme gnat definito dalla seguente sintassi astratta?

gnat ::= zero + uno | 0 + 1
zero ::= 0
uno ::= 1

Giustificare la risposta.

Esercizio 2. Considerate un linguaggio di programmazione imperativo nel quale la dichiarazione (ed inizializzazione) di una variabile venga specificata mediante la costruzione sintattica var x = e in p, e la dichiarazione di una procedura venga specificata con proc P (x) is p_{1} in p_{2}. Il linguaggio adotta un meccanismo lazy per il passaggio dei parametri, in cui l’espressione passata come argomento ad una procedura non viene valutata fino a che la valutazione del corpo della procedura non lo richieda. Qual è il risultato dell’esecuzione del programma

proc P (y) is (x := x + 1; x := x + y) in (var x = 9 in P (x + 1)))

in un ambiente che associ la locazione α alla variabile x ed in una memoria che associ 0 ad α. Rispondere adottando prima regole di scope statico e poi dinamico. Giustificare la risposta.

Esercizio 3. Siano S_{1} ed S_{2} due sostituzioni di tipi. La composizione S_{2} · S_{1} è quella sostituzione che, applicata ad un qualunque tipo T restituisce S_{2}(S_{1}(T)). Scrivere esplicitamente S_{2} · S_{1} supponendo che S_{1} sia {X = Y } ed S_{2} sia {X = Z, Y = W }.

Esercizio 4. Calcolare W(x : ∀ X . X → X, x x) usando l’algoritmo W di inferenza dei tipi di ML. Scrivere i passaggi del calcolo nel dettaglio.

Esercizio 5. Confrontare usando al più 100 parole i meccanismi per mascherare gli aspetti implementativi di un modulo in Modula2 ed ML.

Esercizio 6. Qual è il valore stampato dal seguente programma Java?

class blah {
    public int v=0;
    public int m() {
        return v;
    }
}
class blorg extends blah {
    public int v=1;
    public int m() {
        return v;
    }
}
class javaex1 {
    public static void main (String [] args) {
        blah b = new blorg();
        System.out.println(b.v + b.m());
    }
}

Giustificare la risposta.