Last updated 29/12/1999 by Eugenio Moggi.

Unita' di Genova, Linguaggi Funzionali

Resoconto primo Anno

Risultati di maggior rilievo conseguiti nel corso dell'attivita di ricerca

Relazione con la tempistica iniziale del programma

Come anticipato nel Resoconto primo Anno si sono rivisti gli obbiettivi della seconda fase per continuare l'attivita' iniziata con [MTBS99] ed incentrata sui linguaggi per la programmazione multi-stage.

Corrispondenza con i criteri di verificabilita` enunciati nella proposta originale

I lavori relativi agli obbiettivi per la prima fase sono: [Mog98], [Cal98]. Nel corso del primo anno ci si e' resi conto che le semantiche sviluppate nel progetto potevano avere un impatto molto rilevante per lo sviluppo di linguaggi multi-stage.

A seguito di cio' si e' deciso di ridirigere il campo di applicazione, cio' ha dato luogo ad una collaborazione con OGI, che ha portato a vari articoli [MTBS99, BMTS99, CMT99] rappresentano un importante contributo alla comprensione dei linguaggi per la programmazione multi-stage (in particolare MetaML).

I lavori [JBM98] e [MBJ99] sono preliminari agli obbiettivi che erano stati indicati originariamente per la seconda fase. Tsli obbiettivi non saranno raggiunti prima della fine del progetto.

Carattere innovativo in rapporto allo stato dell'arte nel campo

[MTBS99, BMTS99, CMT99] sono altamente innovativi. Tali articoli propongono dei linguaggi di programmazione idealizzati (basati sul lambda-calcolo) che permettono di manipolare sia codice chiuso che codice aperto, e per i quali e' stato dato un sustema di tipo che garantisce l'assenza di errori a run-time. In tali linguaggi e' possibile effetturare ottimizzazioni (con tecniche tipiche della "partial evaluation") di codice aperto, quindi assemblare pezzi di codice aperto per formare del codice chiuso, ed infine eseguire il codice chiuso (quest'ultimo passo e' tipico della "run-time code generation"). [BMTS99, CMT99] affrontano anche il problema dell'interazione tra multi-stage programming ed effetti computazionali, considerando rispettivamente una semantica denotazionale parametrizzata rispetto ad una monade, ed una estensione del linguaggio con references.

Resoconto secondo Anno (01/02/1999 - 15/02/2000)

[MTBS99] e' il frutto della collaborazione con ricercatori dell'Oregon Graduate Center che da tempo si occupano di linguaggi per computazioni multi-stage. Il linguaggio proposto, AIM, e' il primo tra i linguaggi a due o piu' livelli che permette di manipolare sia codice aperto che codice chiuso. Un contributo essenziale per concepire il linguaggio ed il sistema di tipo e' venuto da una semantica categoriale, descritta in [BMTS99] per un linguaggio leggermente diverso. In [BMTS99] e' proposta anche una semantica denotazionale parametrizzata rispetto ad una monade (con certe proprieta' aggiuntive). Tale semantica suggerisce come coniugare la programmazione multi-stage con effetti computazionali. [CMT99] esamina in dettaglio (a livello di semantica operazionale e di sistema di tipo) l'estensione del linguaggio con references (a la ML). In particolare, si osserva che una estensione naive con tipi reference non e' in grado di garantire l'assenza di errori a run-time (si ha un problema di "scope-extrusion"). Tuttavia, una semplice restrizione, che sfrutta il costruttore per i "tipi chiusi", permettere di ottenere un risultato di "type safety" simile a quello stabilito per il linguaggio puro.


Riferimenti Bibliografici (ordine cronologico inverso)