• 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

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

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

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