A.A. 2001-02

Linguaggi di Programmazione I: Paradigmi

3^{o} “esonero”

data di assegnazione: 14 dicembre 2001 data di consegna: 19 dicembre 2001 - ore 14:00

Inferenza dei tipi

Applicare l’algoritmo W di inferenza dei tipi di ML al programma

let val x = (fn y => (fn z => (y true) + 1)) in (fn w => (x (w 8)) x) end.

descrivendo dettagliatamente ciascun passo del procedimento.

Astrazione

( … in ML) Scrivere un programma ML che implementi il tipo di dato astratto taoista YIN-YANG. Su questo tipo sono definite una funzione di inizializzazione init, una funzione switch ed una funzione equals: una entità Y di tipo YIN-YANG può essere inizializzata invocando init(Y) ed il suo valore può essere cambiato nel suo “opposto” con switch(Y). Due invocazioni consecutive di switch(x) riportano Y nello stesso stato. La funzione equals ci dice se due entità di tipo YIN-YANG si trovano nello stesso stato.

( … in Java) Implementare YIN-YANG in Java.