• Non ci sono risultati.

Espressioni con pattern matching

N/A
N/A
Protected

Academic year: 2021

Condividi "Espressioni con pattern matching"

Copied!
2
0
0

Testo completo

(1)

Linguaggi di Programmazione(A.A. 2012-13)

Espressioni con pattern matching

Specifiche del progetto

Implementare in SML un interprete per il seguente linguaggio di espressioni:

P, Q ::= k | x | (P, Q)

M, N ::= k | x | (M, N ) | let P = Q in N

Le metavariabili k e x indicano rispettivamente costanti appartenenti ad un insieme K (ad esempio i numeri interi) e variabili, appartenenti ad un insieme (numerabile) Var . Espressioni della forma (M, N ) si chiamano coppie; eccone un esempio:

(let x = 3 in (let (y, (7, z)) = (z, (7, x)) in y), 5).

Le metavariabili P e Q indicano espressioni senza let , e si chiamano pattern.

Il dominio di un pattern P , indicato con δ (P ), `e l’insieme delle variabili che vi compaiono:

δ (k) = ∅ δ (x) = {x}

δ ((P, Q)) = δ (P ) ∪ δ (Q).

Il dominio Val dei valori `e costruito dalle costanti e da coppie di valori:

Val = K ∪ (Val × Val ).

Gli ambienti, indicati con la metavariabile E, sono funzioni parziali a dominio finito che associano valori a variabili:

E ∈ Env = Var * Val .

Indichiamo con dom (E) il dominio di E, cio`e l’insieme delle variabili su cui E `e definito. Se P `e un pattern tale che δ (P ) ⊆ dom (E), indichiamo con E(P ) il pattern ottenuto sostituendo in P ciascuna variabile x con E(x). Dato un ambiente E ed un insieme X di variabili, indichiamo con E↑X l’ambiente indefinito sulle variabili in X ed uguale ad E su tutte le altre. Un sequente della forma P = Q ` P0 = Q0 significa che l’equazione P0 = Q0 `e derivabile da P = Q usando le regole di riflessivit`a, simmetria e transitivit`a dell’uguaglianza, e la regola di congruenza: (A, B) = (A0, B0) se e solo se A = A0 e B = B0. Ecco un esempio:

(5, (x, y)) = (y, ((y, z), z)) ` x = (5, 5).

1

(2)

Dato un ambiente E, scriviamo P = Q ` E per indicare che P = Q ` x = v vale se E(x) = v. La regola del let `e la seguente:

[let ] P = Q0` E0 E E0` N ; v E ` let P = Q in N ; v (∗) (∗) se δ (P ) = dom (E0) e Q0= E↑δ (P )(Q) e E0(P ) = E0(Q0).

Buon lavoro!

2

Riferimenti

Documenti correlati

COMPITO DI MATEMATICA DISCRETA Modulo I 22 Giugno

[r]

II sessione (=Sessione Estiva) – II appello (straordinario) Esame scritto dell’1 Luglio 2016.. Nel caso in cui ci` o non sia possibile, se ne spieghi il

Scrivere una funzione ricorsiva maxPrimoRec(int m) che usa scomponi per calcolare il massimo fattore primo di un numero positivo m;.. F scrivere una funzione iterativa maxPrimoIt(int

Per` o, tanti di questi cubi sono “lo stesso cubo” nel senso che possono essere portati uno nell’altro mediante una opportuna rotazione.. Per esempio, da questo punto di vista, tutti

Tipi riferimento Tipi di dato associati alla definizione di una classe; una variabile riferimento memorizza il riferimento ad un oggetto di una classe. Tipi primitivi Tipi di

Supponiamo che il professore, correggendo i com- piti, individui segni di copiatura con probabilità 0.6 quando ci sono, e con prob- abilità 0.05 quando non ci sono (cioè

Un massimo o minimo vincolato per una funzione di due variabili è un massimo o minimo da ricercarsi non su tutto il dominio ma all'interno del sottoinsieme del dominio che