• Non ci sono risultati.

Tipi co-induttivi in SML Specifiche del progetto

N/A
N/A
Protected

Academic year: 2021

Condividi "Tipi co-induttivi in SML Specifiche del progetto"

Copied!
2
0
0

Testo completo

(1)

Linguaggi di Programmazione (A.A. 2006-07)

Tipi co-induttivi in SML

Specifiche del progetto

Introduzione. La sezione “Nozioni preliminari” delle dispense del corso in- troduce le nozioni di insieme definito induttivamente e co-induttivamente. Alla prima di queste nozioni si ispira il costrutto datatype del linguaggio Standard ML (SML). Mediante tale costrutto `e possibile definire un tipo “induttivo” T specificando un insieme di costruttori. Questo consente la definizione “per casi”

di funzioni su T . Come spiegato nelle dispense, una tale definizione non risulta invece fondata per insiemi co-induttivi, i cui elementi non possono essere analiz- zati in base alla loro struttura (mascheramento) ma solo “testati” mediante un insieme di osservatori. Lo SML realizza una forma di mascheramento mediante il costrutto abstype, ma non supporta appieno la nozione di tipo co-induttivo.

In particolare, non `e possibile in SML definire una funzione su un abstype speci- ficando le osservazioni sui valori da essa prodotti. Scopo di questo progetto `e quello di estendere lo SML con un costrutto per la specifca di tipi co-induttivi che consenta definizioni di funzioni “per osservazioni”.

Sintassi. La sintassi del nuovo costrutto per tipi co-induttivi potrebbe essere:

cotype T = F1 to T1 | ... | Fn to Tn ;

dove T `e il tipo che viene definito, e ciascuna clausola Fi to Ti specifica un osservatore Fi:T -> Ti sui valori di T. Data una tale definizione, il program- matore pu`o definire funzioni per osservazioni mediante la sintassi:

fun F is F1(F(x)) = v1

| ...

| Fn(F(x)) = vn ; Specifiche.

1. Definire la sintassi astratta di un sottoinsieme minimo (ma significativo) Fun-co dello SML (il nome suggerisce una estensione del frammento Fun) che includa i costrutti sopra specificati.

2. Scrivere un traduttore Fun-co → SML che, ricevendo in input un file con- tenente un programma nel linguaggio Fun-co restituisca in output codice SML eseguibile. L’esecuzione deve produrre i risultati attesi secondo la semantica dell’SML e dei tipi co-induttivi.

1

(2)

Suggerimenti.

• Lex e Yacc sono tecnologia standard per generare traduttori. Consultate la pagina http://dinosaur.compilertools.net/.

• Una idea per implementare i tipi co-induttivi `e quella di far uso del sistema dei moduli di SML. In particolare, la definizione di un tipo co-induttivo potrebbe essere tradotta nella definizione di una segnatura. I valori del tipo sarebbero in tal caso strutture, che verrebbero manipolate da funzioni (definite per osservazioni) implementate come funtori.

E solo un suggerimento. . .`

Buon lavoro!

2

Riferimenti

Documenti correlati

Connection with connector Vedi pag. 6 Norme per installazione. Instructions for installation Vedi pag.. CARATTERISTICHE TECNICHE

Prima di un eventuale danneggiamento permanente, è neces- sario controllare la resistenza del materiale verso il detergente da utilizzare., Resistente all’acido lattico e al

[r]

Vedremo più avanti che per provare questo fatto è necessario l’assioma della scelta: per chi già sa di cosa si tratta, questo assioma è necessario per poter “scegliere” un

Tutoraggio Analisi

[r]

La larghezza delle piste dei tratti capacitivi deve essere = 10 mm e la resistenza per unità di lunghezza dei tratti induttivi deve essere minore di m alla frequenza di

A completamento della nostra offerta, proponiamo servizi globali: i SICK LifeTime Services garantiscono la sicurezza e la produttività durante l'intero ciclo di vita