elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de...

1074
Paradigme de Programare Mihnea Muraru [email protected] 2019–2020, semestrul 2 1 / 423

Transcript of elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de...

Page 1: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Paradigme de Programare

Mihnea [email protected]

2019–2020, semestrul 2

1 / 423

Page 2: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Partea I

Introducere

2 / 423

Page 3: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Organizare

Obiective

Exemplu introductiv

Paradigme s, i limbaje

3 / 423

Page 4: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Organizare

Obiective

Exemplu introductiv

Paradigme s, i limbaje

4 / 423

Page 5: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Notare

I Teste la curs: 0,5

I Test grila: 0,5

I Laborator: 1 (0,5 exercit,ii + 0,5 teste)

I Teme: 4 (3 × 1.33)

I Examen: 4

5 / 423

Page 6: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Regulament

Va rugam sa citit,i regulamentul cu atent,ie!

http://elf.cs.pub.ro/pp/20/regulament

6 / 423

Page 7: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Desfas, urarea cursului

I Recapitularea cursului anterior

I Predare

I Test din cursul anterior

I Feedback despre cursul curent (de acasa)

7 / 423

Page 8: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Organizare

Obiective

Exemplu introductiv

Paradigme s, i limbaje

8 / 423

Page 9: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Ce vom studia?

1. Modele de calculabilitate:

Diverse perspective conceptuale asupra not,iuniide calculabilitate efectiva

2. Paradigme de programare:

Influent,a perspectivei alese asupra procesuluide modelare s, i rezolvare a problemelor

3. Limbaje de programare:

Mecanisme expresive, aferente paradigmelor,cu accent pe aspectul comparativ

9 / 423

Page 10: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Ce vom studia?

1. Modele de calculabilitate:Diverse perspective conceptuale asupra not,iuniide calculabilitate efectiva

2. Paradigme de programare:

Influent,a perspectivei alese asupra procesuluide modelare s, i rezolvare a problemelor

3. Limbaje de programare:

Mecanisme expresive, aferente paradigmelor,cu accent pe aspectul comparativ

9 / 423

Page 11: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Ce vom studia?

1. Modele de calculabilitate:Diverse perspective conceptuale asupra not,iuniide calculabilitate efectiva

2. Paradigme de programare:Influent,a perspectivei alese asupra procesuluide modelare s, i rezolvare a problemelor

3. Limbaje de programare:

Mecanisme expresive, aferente paradigmelor,cu accent pe aspectul comparativ

9 / 423

Page 12: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Ce vom studia?

1. Modele de calculabilitate:Diverse perspective conceptuale asupra not,iuniide calculabilitate efectiva

2. Paradigme de programare:Influent,a perspectivei alese asupra procesuluide modelare s, i rezolvare a problemelor

3. Limbaje de programare:Mecanisme expresive, aferente paradigmelor,cu accent pe aspectul comparativ

9 / 423

Page 13: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

De ce?

The tools we use have a profound (and devious!)influence on our thinking habits, and, therefore,on our thinking abilities.

Edsger Dijkstra,How do we tell truths that might hurt

10 / 423

Page 14: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Descompunerea problemelor

Controlul complexitat,ii: descompunere s, i interfat,are

Descompunere Accent pe Rezultat

Procedurala Act,iuni ProceduriOrientata obiect Entitat,i Clase s, i obiecte

Funct,ionala Relat,ii Funct,ii în sens matematicLogica Relat,ii Predicate s, i propozit,ii

11 / 423

Page 15: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Descompunerea problemelor

Controlul complexitat,ii: descompunere s, i interfat,are

Descompunere Accent pe RezultatProcedurala Act,iuni Proceduri

Orientata obiect Entitat,i Clase s, i obiecteFunct,ionala Relat,ii Funct,ii în sens matematic

Logica Relat,ii Predicate s, i propozit,ii

11 / 423

Page 16: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Descompunerea problemelor

Controlul complexitat,ii: descompunere s, i interfat,are

Descompunere Accent pe RezultatProcedurala Act,iuni Proceduri

Orientata obiect Entitat,i Clase s, i obiecte

Funct,ionala Relat,ii Funct,ii în sens matematicLogica Relat,ii Predicate s, i propozit,ii

11 / 423

Page 17: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Descompunerea problemelor

Controlul complexitat,ii: descompunere s, i interfat,are

Descompunere Accent pe RezultatProcedurala Act,iuni Proceduri

Orientata obiect Entitat,i Clase s, i obiecteFunct,ionala Relat,ii Funct,ii în sens matematic

Logica Relat,ii Predicate s, i propozit,ii

11 / 423

Page 18: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Descompunerea problemelor

Controlul complexitat,ii: descompunere s, i interfat,are

Descompunere Accent pe RezultatProcedurala Act,iuni Proceduri

Orientata obiect Entitat,i Clase s, i obiecteFunct,ionala Relat,ii Funct,ii în sens matematic

Logica Relat,ii Predicate s, i propozit,ii

11 / 423

Page 19: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Descompunerea problemelor

Controlul complexitat,ii: descompunere s, i interfat,are

Descompunere Accent pe RezultatProcedurala Act,iuni Proceduri

Orientata obiect Entitat,i Clase s, i obiecteFunct,ionala Relat,ii Funct,ii în sens matematic

Logica Relat,ii Predicate s, i propozit,ii

11 / 423

Page 20: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

De ce? (cont.)

I Largirea spectrului de abordare a problemelor

I Identificarea perspectivei ce permite modelareasimpla a unei probleme; alegerea limbajului adecvat

I Exploatarea mecanismelor oferite de limbajelede programare (v. Dijkstra!)

I Sporirea capacitat,ii de învat,are a noi limbajes, i de adaptare la particularitat,ile s, i diferent,eledintre acestea

12 / 423

Page 21: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

De ce? (cont.)

I Largirea spectrului de abordare a problemelor

I Identificarea perspectivei ce permite modelareasimpla a unei probleme; alegerea limbajului adecvat

I Exploatarea mecanismelor oferite de limbajelede programare (v. Dijkstra!)

I Sporirea capacitat,ii de învat,are a noi limbajes, i de adaptare la particularitat,ile s, i diferent,eledintre acestea

12 / 423

Page 22: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

De ce? (cont.)

I Largirea spectrului de abordare a problemelor

I Identificarea perspectivei ce permite modelareasimpla a unei probleme; alegerea limbajului adecvat

I Exploatarea mecanismelor oferite de limbajelede programare (v. Dijkstra!)

I Sporirea capacitat,ii de învat,are a noi limbajes, i de adaptare la particularitat,ile s, i diferent,eledintre acestea

12 / 423

Page 23: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

De ce? (cont.)

I Largirea spectrului de abordare a problemelor

I Identificarea perspectivei ce permite modelareasimpla a unei probleme; alegerea limbajului adecvat

I Exploatarea mecanismelor oferite de limbajelede programare (v. Dijkstra!)

I Sporirea capacitat,ii de învat,are a noi limbajes, i de adaptare la particularitat,ile s, i diferent,eledintre acestea

12 / 423

Page 24: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Modele, paradigme, limbaje

Modelede calcu-labilitate

Mas, inaTuring

ImperativaProce-duralaC

Orientataobiect1Java

C++

Calculullambda

Funct,ionalaRacket

Haskell

Mas, inaMarkov

Asociativa

CLIPS

Mas, inalogica

LogicaProlog

Modele Paradigme Limbaje

1Original imperativa, dar se poate combina chiar cu abordarea funct,ionala 13 / 423

Page 25: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Limitele calculabilitat,ii

I Teza Church-Turing:efectiv calculabil ≡ Turing calculabil

I Echivalent,a celorlalte modele de calculabilitate,s, i a multor altora, cu Mas, ina Turing

I Exista vreun model superior ca fort,a de calcul?

14 / 423

Page 26: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Limitele calculabilitat,ii

I Teza Church-Turing:efectiv calculabil ≡ Turing calculabil

I Echivalent,a celorlalte modele de calculabilitate,s, i a multor altora, cu Mas, ina Turing

I Exista vreun model superior ca fort,a de calcul?

14 / 423

Page 27: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Limitele calculabilitat,ii

I Teza Church-Turing:efectiv calculabil ≡ Turing calculabil

I Echivalent,a celorlalte modele de calculabilitate,s, i a multor altora, cu Mas, ina Turing

I Exista vreun model superior ca fort,a de calcul?

14 / 423

Page 28: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Organizare

Obiective

Exemplu introductiv

Paradigme s, i limbaje

15 / 423

Page 29: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

O prima problema

Example 3.1.Sa se determine elementul minim dintr-un vector.

16 / 423

Page 30: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare imperativaModelul

Mas, ina Turing

. . . b b a a a a . . . Banda de intrare/ies, ire

s0s1

s2

s3 . . .

sn

Unitate de control(depoziteaza starea)

“Daca, în starea s1,capul este în dreptul simbolului b,atunci scrie a în loc, schimba starea în s2s, i deplaseaza capul spre dreapta.”

s1

Cap de citire/scriere(se deplaseaza în ambele direct,ii)

Prelucrare dupa: http://www.texample.net/tikz/examples/turing-machine-2/17 / 423

Page 31: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare imperativaModelul

Mas, ina Turing

. . . a b a a a a . . . Banda de intrare/ies, ire

s0s1

s2

s3 . . .

sn

Unitate de control(depoziteaza starea)

“Daca, în starea s1,capul este în dreptul simbolului b,atunci scrie a în loc, schimba starea în s2s, i deplaseaza capul spre dreapta.”

s2

Cap de citire/scriere(se deplaseaza în ambele direct,ii)

Prelucrare dupa: http://www.texample.net/tikz/examples/turing-machine-2/17 / 423

Page 32: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare imperativa (procedurala)Limbajul

1: procedure MINLIST(L,n)2: min← L[1]

3: i ← 24: while i ≤ n do5: if L[i ] < min then6: min← L[i ]7: end if8: i ← i + 19: end while

10: return min11: end procedure

18 / 423

Page 33: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare imperativaParadigma

I Orientare spre act,iuni s, i efectele acestora

I “Cum” se obt,ine solut,ia, pas, ii de urmat

I Atribuirea ca operat,ie fundamentala

I Programe cu stare

I Secvent,ierea instruct,iunilor

19 / 423

Page 34: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare imperativaParadigma

I Orientare spre act,iuni s, i efectele acestora

I “Cum” se obt,ine solut,ia, pas, ii de urmat

I Atribuirea ca operat,ie fundamentala

I Programe cu stare

I Secvent,ierea instruct,iunilor

19 / 423

Page 35: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare imperativaParadigma

I Orientare spre act,iuni s, i efectele acestora

I “Cum” se obt,ine solut,ia, pas, ii de urmat

I Atribuirea ca operat,ie fundamentala

I Programe cu stare

I Secvent,ierea instruct,iunilor

19 / 423

Page 36: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare imperativaParadigma

I Orientare spre act,iuni s, i efectele acestora

I “Cum” se obt,ine solut,ia, pas, ii de urmat

I Atribuirea ca operat,ie fundamentala

I Programe cu stare

I Secvent,ierea instruct,iunilor

19 / 423

Page 37: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare imperativaParadigma

I Orientare spre act,iuni s, i efectele acestora

I “Cum” se obt,ine solut,ia, pas, ii de urmat

I Atribuirea ca operat,ie fundamentala

I Programe cu stare

I Secvent,ierea instruct,iunilor

19 / 423

Page 38: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare funct,ionalaModelul

Calculul lambda

(λ x . x y )

→ y

“Pentru a aplica funct,ia λx .x

asupra parametrului actual,y , se indentifica parametrul formal, x , în corpul funct,iei, x ,

iar aparit,iile primului, x (singura), se substituiecu parametrul actual, obt,inându-se rezultatul

unui pas de evaluare.”

20 / 423

Page 39: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare funct,ionalaModelul

Calculul lambda

(λ x . x y )

→ y

“Pentru a aplica funct,ia λx .x asupra parametrului actual,y ,

se indentifica parametrul formal, x , în corpul funct,iei, x ,iar aparit,iile primului, x (singura), se substituie

cu parametrul actual, obt,inându-se rezultatulunui pas de evaluare.”

20 / 423

Page 40: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare funct,ionalaModelul

Calculul lambda

(λ x . x y )

→ y

“Pentru a aplica funct,ia λx .x asupra parametrului actual,y , se indentifica parametrul formal, x ,

în corpul funct,iei, x ,iar aparit,iile primului, x (singura), se substituie

cu parametrul actual, obt,inându-se rezultatulunui pas de evaluare.”

20 / 423

Page 41: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare funct,ionalaModelul

Calculul lambda

(λ x . x y )

→ y

“Pentru a aplica funct,ia λx .x asupra parametrului actual,y , se indentifica parametrul formal, x , în corpul funct,iei, x ,

iar aparit,iile primului, x (singura), se substituiecu parametrul actual, obt,inându-se rezultatul

unui pas de evaluare.”

20 / 423

Page 42: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare funct,ionalaModelul

Calculul lambda

(λ x . x y )

→ y

x

“Pentru a aplica funct,ia λx .x asupra parametrului actual,y , se indentifica parametrul formal, x , în corpul funct,iei, x ,

iar aparit,iile primului, x (singura),

se substituiecu parametrul actual, obt,inându-se rezultatul

unui pas de evaluare.”

20 / 423

Page 43: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare funct,ionalaModelul

Calculul lambda

(λ x . x y )

→ y

x

“Pentru a aplica funct,ia λx .x asupra parametrului actual,y , se indentifica parametrul formal, x , în corpul funct,iei, x ,

iar aparit,iile primului, x (singura), se substituiecu parametrul actual,

obt,inându-se rezultatulunui pas de evaluare.”

20 / 423

Page 44: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare funct,ionalaModelul

Calculul lambda

(λ x . x y )→ yx

“Pentru a aplica funct,ia λx .x asupra parametrului actual,y , se indentifica parametrul formal, x , în corpul funct,iei, x ,

iar aparit,iile primului, x (singura), se substituiecu parametrul actual, obt,inându-se rezultatul

unui pas de evaluare.”

20 / 423

Page 45: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare funct,ionalaLimbajul

I Racket (2 variante):

1 (define (minList1 L)

2 (if (= (length L) 1) (car L)

3 (min (car L) (minList1 (cdr L)))))

4

5 (define (minList2 L)

6 (foldl min (car L) (cdr L)))

I Haskell (aceleas, i 2 variante):1 minList1 [h] = h

2 minList1 (h : t) = min h (minList1 t)

3

4 minList2 (h : t) = foldl min h t

21 / 423

Page 46: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare funct,ionalaLimbajul

I Racket (2 variante):

1 (define (minList1 L)

2 (if (= (length L) 1) (car L)

3 (min (car L) (minList1 (cdr L)))))

4

5 (define (minList2 L)

6 (foldl min (car L) (cdr L)))

I Haskell (aceleas, i 2 variante):1 minList1 [h] = h

2 minList1 (h : t) = min h (minList1 t)

3

4 minList2 (h : t) = foldl min h t

21 / 423

Page 47: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare funct,ionalaParadigma

I Funct,ii matematice, care transforma intrarile în ies, iri

I Absent,a atribuirilor s, i a starii

I Funct,ii ca valori de prim rang (e.g., ca parametriai altor funct,ii)

I Recursivitate, în locul iterat,iei

I Compunere de funct,ii, în locul secvent,ieriiinstruct,iunilor

I Diminuarea important,ei ordinii de evaluare

I Funct,ii de ordin superior (i.e. care iau alte funct,iica parametru, e.g., foldl)

22 / 423

Page 48: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare funct,ionalaParadigma

I Funct,ii matematice, care transforma intrarile în ies, iri

I Absent,a atribuirilor s, i a starii

I Funct,ii ca valori de prim rang (e.g., ca parametriai altor funct,ii)

I Recursivitate, în locul iterat,iei

I Compunere de funct,ii, în locul secvent,ieriiinstruct,iunilor

I Diminuarea important,ei ordinii de evaluare

I Funct,ii de ordin superior (i.e. care iau alte funct,iica parametru, e.g., foldl)

22 / 423

Page 49: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare funct,ionalaParadigma

I Funct,ii matematice, care transforma intrarile în ies, iri

I Absent,a atribuirilor s, i a starii

I Funct,ii ca valori de prim rang (e.g., ca parametriai altor funct,ii)

I Recursivitate, în locul iterat,iei

I Compunere de funct,ii, în locul secvent,ieriiinstruct,iunilor

I Diminuarea important,ei ordinii de evaluare

I Funct,ii de ordin superior (i.e. care iau alte funct,iica parametru, e.g., foldl)

22 / 423

Page 50: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare funct,ionalaParadigma

I Funct,ii matematice, care transforma intrarile în ies, iri

I Absent,a atribuirilor s, i a starii

I Funct,ii ca valori de prim rang (e.g., ca parametriai altor funct,ii)

I Recursivitate, în locul iterat,iei

I Compunere de funct,ii, în locul secvent,ieriiinstruct,iunilor

I Diminuarea important,ei ordinii de evaluare

I Funct,ii de ordin superior (i.e. care iau alte funct,iica parametru, e.g., foldl)

22 / 423

Page 51: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare funct,ionalaParadigma

I Funct,ii matematice, care transforma intrarile în ies, iri

I Absent,a atribuirilor s, i a starii

I Funct,ii ca valori de prim rang (e.g., ca parametriai altor funct,ii)

I Recursivitate, în locul iterat,iei

I Compunere de funct,ii, în locul secvent,ieriiinstruct,iunilor

I Diminuarea important,ei ordinii de evaluare

I Funct,ii de ordin superior (i.e. care iau alte funct,iica parametru, e.g., foldl)

22 / 423

Page 52: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare funct,ionalaParadigma

I Funct,ii matematice, care transforma intrarile în ies, iri

I Absent,a atribuirilor s, i a starii

I Funct,ii ca valori de prim rang (e.g., ca parametriai altor funct,ii)

I Recursivitate, în locul iterat,iei

I Compunere de funct,ii, în locul secvent,ieriiinstruct,iunilor

I Diminuarea important,ei ordinii de evaluare

I Funct,ii de ordin superior (i.e. care iau alte funct,iica parametru, e.g., foldl)

22 / 423

Page 53: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare funct,ionalaParadigma

I Funct,ii matematice, care transforma intrarile în ies, iri

I Absent,a atribuirilor s, i a starii

I Funct,ii ca valori de prim rang (e.g., ca parametriai altor funct,ii)

I Recursivitate, în locul iterat,iei

I Compunere de funct,ii, în locul secvent,ieriiinstruct,iunilor

I Diminuarea important,ei ordinii de evaluare

I Funct,ii de ordin superior (i.e. care iau alte funct,iica parametru, e.g., foldl)

22 / 423

Page 54: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare logicaModelul

Logica cu predicate de ordin I

muritor (Socrate) om(Platon) ∀x .om(x)⇒muritor (x)

“La ce se poate lega variabila yastfel încât muritor (y) sa fie satisfacuta?”

y ← Socrate sau y ← Platon

23 / 423

Page 55: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare logicaModelul

Logica cu predicate de ordin I

muritor (Socrate) om(Platon) ∀x .om(x)⇒muritor (x)

“La ce se poate lega variabila yastfel încât muritor (y) sa fie satisfacuta?”

y ← Socrate sau y ← Platon

23 / 423

Page 56: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare logicaModelul

Logica cu predicate de ordin I

muritor (Socrate) om(Platon) ∀x .om(x)⇒muritor (x)

“La ce se poate lega variabila yastfel încât muritor (y) sa fie satisfacuta?”

y ← Socrate sau y ← Platon

23 / 423

Page 57: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare logicaLimbajul

I Axiome:

1. x ≤ y ⇒min(x ,y ,x)

2. y < x ⇒min(x ,y ,y)

3. minList([m],m)

4. minList([y |t ],n)∧min(x ,n,m)⇒minList([x ,y |t ],m)

I Prolog:1 min(X, Y, X) :- X =< Y.

2 min(X, Y, Y) :- Y < X.

3

4 minList([M], M).

5 minList([X, Y | T], M) :-

6 minList([Y | T], N), min(X, N, M).

24 / 423

Page 58: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare logicaLimbajul

I Axiome:1. x ≤ y ⇒min(x ,y ,x)

2. y < x ⇒min(x ,y ,y)

3. minList([m],m)

4. minList([y |t ],n)∧min(x ,n,m)⇒minList([x ,y |t ],m)

I Prolog:1 min(X, Y, X) :- X =< Y.

2 min(X, Y, Y) :- Y < X.

3

4 minList([M], M).

5 minList([X, Y | T], M) :-

6 minList([Y | T], N), min(X, N, M).

24 / 423

Page 59: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare logicaLimbajul

I Axiome:1. x ≤ y ⇒min(x ,y ,x)

2. y < x ⇒min(x ,y ,y)

3. minList([m],m)

4. minList([y |t ],n)∧min(x ,n,m)⇒minList([x ,y |t ],m)

I Prolog:1 min(X, Y, X) :- X =< Y.

2 min(X, Y, Y) :- Y < X.

3

4 minList([M], M).

5 minList([X, Y | T], M) :-

6 minList([Y | T], N), min(X, N, M).

24 / 423

Page 60: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare logicaLimbajul

I Axiome:1. x ≤ y ⇒min(x ,y ,x)

2. y < x ⇒min(x ,y ,y)

3. minList([m],m)

4. minList([y |t ],n)∧min(x ,n,m)⇒minList([x ,y |t ],m)

I Prolog:1 min(X, Y, X) :- X =< Y.

2 min(X, Y, Y) :- Y < X.

3

4 minList([M], M).

5 minList([X, Y | T], M) :-

6 minList([Y | T], N), min(X, N, M).

24 / 423

Page 61: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare logicaLimbajul

I Axiome:1. x ≤ y ⇒min(x ,y ,x)

2. y < x ⇒min(x ,y ,y)

3. minList([m],m)

4. minList([y |t ],n)∧min(x ,n,m)⇒minList([x ,y |t ],m)

I Prolog:1 min(X, Y, X) :- X =< Y.

2 min(X, Y, Y) :- Y < X.

3

4 minList([M], M).

5 minList([X, Y | T], M) :-

6 minList([Y | T], N), min(X, N, M).

24 / 423

Page 62: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare logicaLimbajul

I Axiome:1. x ≤ y ⇒min(x ,y ,x)

2. y < x ⇒min(x ,y ,y)

3. minList([m],m)

4. minList([y |t ],n)∧min(x ,n,m)⇒minList([x ,y |t ],m)

I Prolog:1 min(X, Y, X) :- X =< Y.

2 min(X, Y, Y) :- Y < X.

3

4 minList([M], M).

5 minList([X, Y | T], M) :-

6 minList([Y | T], N), min(X, N, M).

24 / 423

Page 63: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare logicaParadigma

I Formularea proprietat,ilor logice ale obiectelors, i solut,iei

I Flux de control implicit, dirijat de date

25 / 423

Page 64: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordare logicaParadigma

I Formularea proprietat,ilor logice ale obiectelors, i solut,iei

I Flux de control implicit, dirijat de date

25 / 423

Page 65: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordarile funct,ionala s, i logicaAsemanari

I Formularea proprietat,ilor solut,iei

I “Ce” trebuie obt,inut (vs. “cum” la imperativa)

I Se subsumeaza abordarii declarative,opuse celei imperative

26 / 423

Page 66: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordarile funct,ionala s, i logicaAsemanari

I Formularea proprietat,ilor solut,iei

I “Ce” trebuie obt,inut (vs. “cum” la imperativa)

I Se subsumeaza abordarii declarative,opuse celei imperative

26 / 423

Page 67: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abordarile funct,ionala s, i logicaAsemanari

I Formularea proprietat,ilor solut,iei

I “Ce” trebuie obt,inut (vs. “cum” la imperativa)

I Se subsumeaza abordarii declarative,opuse celei imperative

26 / 423

Page 68: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Organizare

Obiective

Exemplu introductiv

Paradigme s, i limbaje

27 / 423

Page 69: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Ce este o paradigma de programare?

I Un set de convent,ii care dirijeaza manieraîn care gândim programele

I Ea dicteaza modul în care:

I reprezentam dateleI operat,iile prelucreaza datele respective

I Abordarile anterioare reprezinta paradigmede programare (procedurala, funct,ionala, logica)

28 / 423

Page 70: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Ce este o paradigma de programare?

I Un set de convent,ii care dirijeaza manieraîn care gândim programele

I Ea dicteaza modul în care:

I reprezentam dateleI operat,iile prelucreaza datele respective

I Abordarile anterioare reprezinta paradigmede programare (procedurala, funct,ionala, logica)

28 / 423

Page 71: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Ce este o paradigma de programare?

I Un set de convent,ii care dirijeaza manieraîn care gândim programele

I Ea dicteaza modul în care:I reprezentam datele

I operat,iile prelucreaza datele respective

I Abordarile anterioare reprezinta paradigmede programare (procedurala, funct,ionala, logica)

28 / 423

Page 72: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Ce este o paradigma de programare?

I Un set de convent,ii care dirijeaza manieraîn care gândim programele

I Ea dicteaza modul în care:I reprezentam dateleI operat,iile prelucreaza datele respective

I Abordarile anterioare reprezinta paradigmede programare (procedurala, funct,ionala, logica)

28 / 423

Page 73: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Ce este o paradigma de programare?

I Un set de convent,ii care dirijeaza manieraîn care gândim programele

I Ea dicteaza modul în care:I reprezentam dateleI operat,iile prelucreaza datele respective

I Abordarile anterioare reprezinta paradigmede programare (procedurala, funct,ionala, logica)

28 / 423

Page 74: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Accept,ii asupra limbajelor

I Modalitate de exprimare a instruct,iunilor pe carecalculatorul le executa

I Mai important, modalitate de exprimare a unui modde gândire

29 / 423

Page 75: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Accept,ii asupra limbajelor

I Modalitate de exprimare a instruct,iunilor pe carecalculatorul le executa

I Mai important, modalitate de exprimare a unui modde gândire

29 / 423

Page 76: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Accept,ii asupra limbajelor

. . . “computer science” is not a science and [. . . ] itssignificance has little to do with computers. Thecomputer revolution is a revolution in the way wethink and in the way we express what we think.

Harold Abelson et al.,Structure and Interpretation of Computer Programs

30 / 423

Page 77: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Istoric

31 / 423

Page 78: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Câteva trasaturi

I TipareI Statica/ dinamicaI Tare/ slaba

I Ordinea de evaluare a parametrilor funct,iilorI AplicativaI Normala

I Legarea variabilelorI StaticaI Dinamica

32 / 423

Page 79: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Câteva trasaturi

I TipareI Statica/ dinamicaI Tare/ slaba

I Ordinea de evaluare a parametrilor funct,iilorI AplicativaI Normala

I Legarea variabilelorI StaticaI Dinamica

32 / 423

Page 80: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Câteva trasaturi

I TipareI Statica/ dinamicaI Tare/ slaba

I Ordinea de evaluare a parametrilor funct,iilorI AplicativaI Normala

I Legarea variabilelorI StaticaI Dinamica

32 / 423

Page 81: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezumat

Important,a cunoas, teriiparadigmelor s, i limbajelor de programare,

în scopul identificarii celor convenabilepentru modelarea unei probleme particulare

33 / 423

Page 82: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Partea II

Limbajul Racket

34 / 423

Page 83: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Expresii s, i evaluare

Liste s, i perechi

Tipare

Omoiconicitate s, i metaprogramare

35 / 423

Page 84: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Expresii s, i evaluare

Liste s, i perechi

Tipare

Omoiconicitate s, i metaprogramare

36 / 423

Page 85: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Expresii

(∗ (+ 1 2) 3)

evaluare−−−−−→ 9

37 / 423

Page 86: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Expresii

(∗ (+ 1 2) 3)

evaluare−−−−−→ 9

operator

37 / 423

Page 87: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Expresii

(∗ (+ 1 2) 3)

evaluare−−−−−→ 9

operator operanzi

37 / 423

Page 88: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Expresii

(∗ (+ 1 2) 3)

evaluare−−−−−→ 9

operator operanzi

operator

37 / 423

Page 89: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Expresii

(∗ (+ 1 2) 3)

evaluare−−−−−→ 9

operator operanzi

operator operanzi

37 / 423

Page 90: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Expresii

(∗ (+ 1 2) 3) evaluare−−−−−→

9

operator operanzi

operator operanzi

37 / 423

Page 91: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Expresii

(∗ (+ 1 2) 3) evaluare−−−−−→ 9

operator operanzi

operator operanzi

valoare

37 / 423

Page 92: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluarea expresiilor primitive

1. Evaluarea (reducerea) operanzilor la valori(argumente)

2. Aplicarea operatorului primitiv asupra argumentelor

Recursiv pentru subexpresii

1 (* (+ 1 2) 3)

→ (* 3 3) → 9

Racket stepper

38 / 423

Page 93: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluarea expresiilor primitive

1. Evaluarea (reducerea) operanzilor la valori(argumente)

2. Aplicarea operatorului primitiv asupra argumentelor

Recursiv pentru subexpresii

1 (* (+ 1 2) 3)

→ (* 3 3) → 9

Racket stepper

38 / 423

Page 94: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluarea expresiilor primitive

1. Evaluarea (reducerea) operanzilor la valori(argumente)

2. Aplicarea operatorului primitiv asupra argumentelor

Recursiv pentru subexpresii

1 (* (+ 1 2) 3) → (* 3 3)

→ 9

Racket stepper

38 / 423

Page 95: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluarea expresiilor primitive

1. Evaluarea (reducerea) operanzilor la valori(argumente)

2. Aplicarea operatorului primitiv asupra argumentelor

Recursiv pentru subexpresii

1 (* (+ 1 2) 3) → (* 3 3)

→ 9

Racket stepper

38 / 423

Page 96: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluarea expresiilor primitive

1. Evaluarea (reducerea) operanzilor la valori(argumente)

2. Aplicarea operatorului primitiv asupra argumentelor

Recursiv pentru subexpresii

1 (* (+ 1 2) 3) → (* 3 3) → 9

Racket stepper

38 / 423

Page 97: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluarea expresiilor primitive

1. Evaluarea (reducerea) operanzilor la valori(argumente)

2. Aplicarea operatorului primitiv asupra argumentelor

Recursiv pentru subexpresii

1 (* (+ 1 2) 3) → (* 3 3) → 9

Racket stepper

38 / 423

Page 98: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineScop

1 (define WIDTH 100)

I Leaga o variabila globala la valoarea unei expresii

I Atent,ie! Principial, este vorba de constante

I Avantaje:

I Lizibilitate (atribuire de sens prin numire)I Flexibilitate (modificare într-un singur loc)I Reutilizare (evitarea reproducerii multiple

a unei expresii complexe)

39 / 423

Page 99: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineScop

1 (define WIDTH 100)

I Leaga o variabila globala la valoarea unei expresii

I Atent,ie! Principial, este vorba de constante

I Avantaje:

I Lizibilitate (atribuire de sens prin numire)I Flexibilitate (modificare într-un singur loc)I Reutilizare (evitarea reproducerii multiple

a unei expresii complexe)

39 / 423

Page 100: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineScop

1 (define WIDTH 100)

I Leaga o variabila globala la valoarea unei expresii

I Atent,ie! Principial, este vorba de constante

I Avantaje:

I Lizibilitate (atribuire de sens prin numire)I Flexibilitate (modificare într-un singur loc)I Reutilizare (evitarea reproducerii multiple

a unei expresii complexe)

39 / 423

Page 101: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineScop

1 (define WIDTH 100)

I Leaga o variabila globala la valoarea unei expresii

I Atent,ie! Principial, este vorba de constante

I Avantaje:

I Lizibilitate (atribuire de sens prin numire)I Flexibilitate (modificare într-un singur loc)I Reutilizare (evitarea reproducerii multiple

a unei expresii complexe)

39 / 423

Page 102: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineScop

1 (define WIDTH 100)

I Leaga o variabila globala la valoarea unei expresii

I Atent,ie! Principial, este vorba de constante

I Avantaje:I Lizibilitate (atribuire de sens prin numire)

I Flexibilitate (modificare într-un singur loc)I Reutilizare (evitarea reproducerii multiple

a unei expresii complexe)

39 / 423

Page 103: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineScop

1 (define WIDTH 100)

I Leaga o variabila globala la valoarea unei expresii

I Atent,ie! Principial, este vorba de constante

I Avantaje:I Lizibilitate (atribuire de sens prin numire)I Flexibilitate (modificare într-un singur loc)

I Reutilizare (evitarea reproducerii multiplea unei expresii complexe)

39 / 423

Page 104: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineScop

1 (define WIDTH 100)

I Leaga o variabila globala la valoarea unei expresii

I Atent,ie! Principial, este vorba de constante

I Avantaje:I Lizibilitate (atribuire de sens prin numire)I Flexibilitate (modificare într-un singur loc)I Reutilizare (evitarea reproducerii multiple

a unei expresii complexe)

39 / 423

Page 105: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineEvaluare

1. La definire, se evalueaza expresia,

s, i se leaga variabila la valoarea ei

2. La utilizare, variabila se evalueaza la valoarea ei

1 (define x (* (+ 1 2) 3) )

; x <- 9

2 (+ x 10)

→ (+ 9 10)

40 / 423

Page 106: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineEvaluare

1. La definire, se evalueaza expresia,

s, i se leaga variabila la valoarea ei

2. La utilizare, variabila se evalueaza la valoarea ei

1 (define x (* (+ 1 2) 3) )

; x <- 9

2 (+ x 10)

→ (+ 9 10)

40 / 423

Page 107: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineEvaluare

1. La definire, se evalueaza expresia,s, i se leaga variabila la valoarea ei

2. La utilizare,

variabila se evalueaza la valoarea ei

1 (define x (* (+ 1 2) 3) ) ; x <- 9

2 (+ x 10)

→ (+ 9 10)

40 / 423

Page 108: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineEvaluare

1. La definire, se evalueaza expresia,s, i se leaga variabila la valoarea ei

2. La utilizare,

variabila se evalueaza la valoarea ei

1 (define x (* (+ 1 2) 3) ) ; x <- 9

2 (+ x 10)

→ (+ 9 10)

40 / 423

Page 109: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineEvaluare

1. La definire, se evalueaza expresia,s, i se leaga variabila la valoarea ei

2. La utilizare, variabila se evalueaza la valoarea ei

1 (define x (* (+ 1 2) 3) ) ; x <- 9

2 (+ x 10) → (+ 9 10)

40 / 423

Page 110: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,iiDefinire

1 (define ( increment n )

2 (+ n 1) )

1 (define ( average x y )

2 (/ (+ x y) 2) )

I Accept,ie matematica a funct,iilor — valoare calculataI Absent,a informat,iei de tip

41 / 423

Page 111: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,iiDefinire

1 (define ( increment n )

2 (+ n 1) )

1 (define ( average x y )

2 (/ (+ x y) 2) )

nume

I Accept,ie matematica a funct,iilor — valoare calculataI Absent,a informat,iei de tip

41 / 423

Page 112: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,iiDefinire

1 (define ( increment n )

2 (+ n 1) )

1 (define ( average x y )

2 (/ (+ x y) 2) )

nume parametri

I Accept,ie matematica a funct,iilor — valoare calculataI Absent,a informat,iei de tip

41 / 423

Page 113: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,iiDefinire

1 (define ( increment n )

2 (+ n 1) )

1 (define ( average x y )

2 (/ (+ x y) 2) )

nume parametri

corp (o unica expresie)

I Accept,ie matematica a funct,iilor — valoare calculataI Absent,a informat,iei de tip

41 / 423

Page 114: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,iiDefinire

1 (define ( increment n )

2 (+ n 1) )

1 (define ( average x y )

2 (/ (+ x y) 2) )

nume parametri

corp (o unica expresie)

I Accept,ie matematica a funct,iilor — valoare calculata

I Absent,a informat,iei de tip

41 / 423

Page 115: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,iiDefinire

1 (define ( increment n )

2 (+ n 1) )

1 (define ( average x y )

2 (/ (+ x y) 2) )

nume parametri

corp (o unica expresie)

I Accept,ie matematica a funct,iilor — valoare calculataI Absent,a informat,iei de tip

41 / 423

Page 116: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,iiEvaluare

Definire:

I Înregistrarea definit,iei funct,iei

1 (define (increment x)

; increment <- <functia>

2 (+ x 1))

Aplicare:

1. Evaluarea (reducerea) operanzilor

la argumente2. Substituirea argumentelor în corpul funct,iei3. Evaluarea expresiei obt,inute

1 (increment (+ 1 2) )

→ (increment 3 )

2 → (+ 3 1) → 4

42 / 423

Page 117: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,iiEvaluare

Definire:I Înregistrarea definit,iei funct,iei

1 (define (increment x) ; increment <- <functia>

2 (+ x 1))

Aplicare:

1. Evaluarea (reducerea) operanzilor

la argumente2. Substituirea argumentelor în corpul funct,iei3. Evaluarea expresiei obt,inute

1 (increment (+ 1 2) )

→ (increment 3 )

2 → (+ 3 1) → 4

42 / 423

Page 118: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,iiEvaluare

Definire:I Înregistrarea definit,iei funct,iei

1 (define (increment x) ; increment <- <functia>

2 (+ x 1))

Aplicare:1. Evaluarea (reducerea) operanzilor

la argumente

2. Substituirea argumentelor în corpul funct,iei3. Evaluarea expresiei obt,inute

1 (increment (+ 1 2) )

→ (increment 3 )

2 → (+ 3 1) → 4

42 / 423

Page 119: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,iiEvaluare

Definire:I Înregistrarea definit,iei funct,iei

1 (define (increment x) ; increment <- <functia>

2 (+ x 1))

Aplicare:1. Evaluarea (reducerea) operanzilor la argumente

2. Substituirea argumentelor în corpul funct,iei3. Evaluarea expresiei obt,inute

1 (increment (+ 1 2) ) → (increment 3 )

2 → (+ 3 1) → 4

42 / 423

Page 120: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,iiEvaluare

Definire:I Înregistrarea definit,iei funct,iei

1 (define (increment x) ; increment <- <functia>

2 (+ x 1))

Aplicare:1. Evaluarea (reducerea) operanzilor la argumente2. Substituirea argumentelor în corpul funct,iei

3. Evaluarea expresiei obt,inute

1 (increment (+ 1 2) ) → (increment 3 )

2 → (+ 3 1) → 4

42 / 423

Page 121: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,iiEvaluare

Definire:I Înregistrarea definit,iei funct,iei

1 (define (increment x) ; increment <- <functia>

2 (+ x 1))

Aplicare:1. Evaluarea (reducerea) operanzilor la argumente2. Substituirea argumentelor în corpul funct,iei

3. Evaluarea expresiei obt,inute

1 (increment (+ 1 2) ) → (increment 3 )

2 → (+ 3 1)

→ 4

42 / 423

Page 122: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,iiEvaluare

Definire:I Înregistrarea definit,iei funct,iei

1 (define (increment x) ; increment <- <functia>

2 (+ x 1))

Aplicare:1. Evaluarea (reducerea) operanzilor la argumente2. Substituirea argumentelor în corpul funct,iei3. Evaluarea expresiei obt,inute

1 (increment (+ 1 2) ) → (increment 3 )

2 → (+ 3 1)

→ 4

42 / 423

Page 123: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,iiEvaluare

Definire:I Înregistrarea definit,iei funct,iei

1 (define (increment x) ; increment <- <functia>

2 (+ x 1))

Aplicare:1. Evaluarea (reducerea) operanzilor la argumente2. Substituirea argumentelor în corpul funct,iei3. Evaluarea expresiei obt,inute

1 (increment (+ 1 2) ) → (increment 3 )

2 → (+ 3 1) → 4

42 / 423

Page 124: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia ifPrezentare

1 (if (< 1 2) (+ 3 4) (+ 5 6))

I Imaginabila în forma unei funct,ii

I Ramurile then s, i else ca operanzi

I De aici, obligativitatea prezent,ei ramurii else!

43 / 423

Page 125: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia ifPrezentare

1 (if (< 1 2) (+ 3 4) (+ 5 6))

I Imaginabila în forma unei funct,ii

I Ramurile then s, i else ca operanzi

I De aici, obligativitatea prezent,ei ramurii else!

43 / 423

Page 126: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia ifPrezentare

1 (if (< 1 2) (+ 3 4) (+ 5 6))

I Imaginabila în forma unei funct,ii

I Ramurile then s, i else ca operanzi

I De aici, obligativitatea prezent,ei ramurii else!

43 / 423

Page 127: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia ifEvaluare

1. Evaluarea condit,iei

2. Înlocuirea întregii expresii if cu ramura potrivita

3. Evaluarea expresiei obt,inute

Ordine diferita de evaluare, fat,a de funct,iile obis, nuite!

1 (if (< 1 2) (+ 3 4) (+ 5 6))

2 → (if true (+ 3 4) (+ 5 6))

3 → (+ 3 4) → 7

44 / 423

Page 128: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia ifEvaluare

1. Evaluarea condit,iei

2. Înlocuirea întregii expresii if cu ramura potrivita

3. Evaluarea expresiei obt,inute

Ordine diferita de evaluare, fat,a de funct,iile obis, nuite!

1 (if (< 1 2) (+ 3 4) (+ 5 6))

2 → (if true (+ 3 4) (+ 5 6))

3 → (+ 3 4) → 7

44 / 423

Page 129: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia ifEvaluare

1. Evaluarea condit,iei

2. Înlocuirea întregii expresii if cu ramura potrivita

3. Evaluarea expresiei obt,inute

Ordine diferita de evaluare, fat,a de funct,iile obis, nuite!

1 (if (< 1 2) (+ 3 4) (+ 5 6))

2 → (if true (+ 3 4) (+ 5 6))

3 → (+ 3 4) → 7

44 / 423

Page 130: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia ifEvaluare

1. Evaluarea condit,iei

2. Înlocuirea întregii expresii if cu ramura potrivita

3. Evaluarea expresiei obt,inute

Ordine diferita de evaluare, fat,a de funct,iile obis, nuite!

1 (if (< 1 2) (+ 3 4) (+ 5 6))

2 → (if true (+ 3 4) (+ 5 6))

3 → (+ 3 4) → 7

44 / 423

Page 131: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia ifEvaluare

1. Evaluarea condit,iei

2. Înlocuirea întregii expresii if cu ramura potrivita

3. Evaluarea expresiei obt,inute

Ordine diferita de evaluare, fat,a de funct,iile obis, nuite!

1 (if (< 1 2) (+ 3 4) (+ 5 6))

2 → (if true (+ 3 4) (+ 5 6))

3 → (+ 3 4)

→ 7

44 / 423

Page 132: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia ifEvaluare

1. Evaluarea condit,iei

2. Înlocuirea întregii expresii if cu ramura potrivita

3. Evaluarea expresiei obt,inute

Ordine diferita de evaluare, fat,a de funct,iile obis, nuite!

1 (if (< 1 2) (+ 3 4) (+ 5 6))

2 → (if true (+ 3 4) (+ 5 6))

3 → (+ 3 4)

→ 7

44 / 423

Page 133: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia ifEvaluare

1. Evaluarea condit,iei

2. Înlocuirea întregii expresii if cu ramura potrivita

3. Evaluarea expresiei obt,inute

Ordine diferita de evaluare, fat,a de funct,iile obis, nuite!

1 (if (< 1 2) (+ 3 4) (+ 5 6))

2 → (if true (+ 3 4) (+ 5 6))

3 → (+ 3 4) → 7

44 / 423

Page 134: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia ifEvaluare

1. Evaluarea condit,iei

2. Înlocuirea întregii expresii if cu ramura potrivita

3. Evaluarea expresiei obt,inute

Ordine diferita de evaluare, fat,a de funct,iile obis, nuite!

1 (if (< 1 2) (+ 3 4) (+ 5 6))

2 → (if true (+ 3 4) (+ 5 6))

3 → (+ 3 4) → 7

44 / 423

Page 135: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Expresii s, i evaluare

Liste s, i perechi

Tipare

Omoiconicitate s, i metaprogramare

45 / 423

Page 136: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ListeLiterali

I Aspectul de lista al aplicat,iilor operatorilor

(+ 1 2)

I Ce s-ar întâmpla daca am înlocui + cu 0?

(0 1 2)

Eroare! 0 nu este operator!

I Solut,ie: împiedicarea evaluarii, cu quote

(quote (0 1 2)) sau ’(0 1 2)

46 / 423

Page 137: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ListeLiterali

I Aspectul de lista al aplicat,iilor operatorilor

(+ 1 2)

I Ce s-ar întâmpla daca am înlocui + cu 0?

(0 1 2)

Eroare! 0 nu este operator!

I Solut,ie: împiedicarea evaluarii, cu quote

(quote (0 1 2)) sau ’(0 1 2)

46 / 423

Page 138: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ListeLiterali

I Aspectul de lista al aplicat,iilor operatorilor

(+ 1 2)

I Ce s-ar întâmpla daca am înlocui + cu 0?

(0 1 2)

Eroare! 0 nu este operator!

I Solut,ie: împiedicarea evaluarii, cu quote

(quote (0 1 2)) sau ’(0 1 2)

46 / 423

Page 139: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ListeLiterali

I Aspectul de lista al aplicat,iilor operatorilor

(+ 1 2)

I Ce s-ar întâmpla daca am înlocui + cu 0?

(0 1 2)

Eroare! 0 nu este operator!

I Solut,ie: împiedicarea evaluarii, cu quote

(quote (0 1 2)) sau ’(0 1 2)

46 / 423

Page 140: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ListeStructura

I Structura recursiva

I O lista se obt,ine prin introducerea unui element(head) în vârful altei liste (tail)

(cons 0 ’(1 2)) → ’(0 1 2)

I Cazul de baza: lista vida, ’()

I Alternativa de construct,ie: funct,ia list

(list 0 1 2)

I Selectori(car ’(0 1 2)) → 0(cdr ’(0 1 2)) → ’(1 2)

47 / 423

Page 141: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ListeStructura

I Structura recursivaI O lista se obt,ine prin introducerea unui element

(head) în vârful altei liste (tail)

(cons 0 ’(1 2)) → ’(0 1 2)

I Cazul de baza: lista vida, ’()

I Alternativa de construct,ie: funct,ia list

(list 0 1 2)

I Selectori(car ’(0 1 2)) → 0(cdr ’(0 1 2)) → ’(1 2)

47 / 423

Page 142: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ListeStructura

I Structura recursivaI O lista se obt,ine prin introducerea unui element

(head) în vârful altei liste (tail)

(cons 0 ’(1 2)) → ’(0 1 2)

I Cazul de baza: lista vida, ’()

I Alternativa de construct,ie: funct,ia list

(list 0 1 2)

I Selectori(car ’(0 1 2)) → 0(cdr ’(0 1 2)) → ’(1 2)

47 / 423

Page 143: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ListeStructura

I Structura recursivaI O lista se obt,ine prin introducerea unui element

(head) în vârful altei liste (tail)

(cons 0 ’(1 2)) → ’(0 1 2)

I Cazul de baza: lista vida, ’()

I Alternativa de construct,ie: funct,ia list

(list 0 1 2)

I Selectori(car ’(0 1 2)) → 0(cdr ’(0 1 2)) → ’(1 2)

47 / 423

Page 144: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ListeStructura

I Structura recursivaI O lista se obt,ine prin introducerea unui element

(head) în vârful altei liste (tail)

(cons 0 ’(1 2)) → ’(0 1 2)

I Cazul de baza: lista vida, ’()

I Alternativa de construct,ie: funct,ia list

(list 0 1 2)

I Selectori(car ’(0 1 2)) → 0(cdr ’(0 1 2)) → ’(1 2)

47 / 423

Page 145: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ListeFunct,ii

I Exploatarea structurii recursive de funct,iile pe liste

I Exemplu: minimul unei liste nevide (v. slide-ul 21)

I Axiome, pornind de la un tip de date abstract List ,cu constructorii de baza ′() s, i cons:

(minList (cons e ′())) = e(minList (cons e L)) = (min e (minList (cdr L)))

I Implementare

1 (define (minList1 L)

2 (if (= (length L) 1) (car L)

3 (min (car L) (minList1 (cdr L)))))

I Traducere fidela a axiomelor unui TDAîntr-un program funct,ional!

48 / 423

Page 146: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ListeFunct,ii

I Exploatarea structurii recursive de funct,iile pe liste

I Exemplu: minimul unei liste nevide (v. slide-ul 21)

I Axiome, pornind de la un tip de date abstract List ,cu constructorii de baza ′() s, i cons:

(minList (cons e ′())) = e(minList (cons e L)) = (min e (minList (cdr L)))

I Implementare

1 (define (minList1 L)

2 (if (= (length L) 1) (car L)

3 (min (car L) (minList1 (cdr L)))))

I Traducere fidela a axiomelor unui TDAîntr-un program funct,ional!

48 / 423

Page 147: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ListeFunct,ii

I Exploatarea structurii recursive de funct,iile pe liste

I Exemplu: minimul unei liste nevide (v. slide-ul 21)I Axiome, pornind de la un tip de date abstract List ,

cu constructorii de baza ′() s, i cons:

(minList (cons e ′())) = e(minList (cons e L)) = (min e (minList (cdr L)))

I Implementare

1 (define (minList1 L)

2 (if (= (length L) 1) (car L)

3 (min (car L) (minList1 (cdr L)))))

I Traducere fidela a axiomelor unui TDAîntr-un program funct,ional!

48 / 423

Page 148: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ListeFunct,ii

I Exploatarea structurii recursive de funct,iile pe liste

I Exemplu: minimul unei liste nevide (v. slide-ul 21)I Axiome, pornind de la un tip de date abstract List ,

cu constructorii de baza ′() s, i cons:

(minList (cons e ′())) = e(minList (cons e L)) = (min e (minList (cdr L)))

I Implementare

1 (define (minList1 L)

2 (if (= (length L) 1) (car L)

3 (min (car L) (minList1 (cdr L)))))

I Traducere fidela a axiomelor unui TDAîntr-un program funct,ional!

48 / 423

Page 149: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ListeFunct,ii

I Exploatarea structurii recursive de funct,iile pe liste

I Exemplu: minimul unei liste nevide (v. slide-ul 21)I Axiome, pornind de la un tip de date abstract List ,

cu constructorii de baza ′() s, i cons:

(minList (cons e ′())) = e(minList (cons e L)) = (min e (minList (cdr L)))

I Implementare

1 (define (minList1 L)

2 (if (= (length L) 1) (car L)

3 (min (car L) (minList1 (cdr L)))))

I Traducere fidela a axiomelor unui TDAîntr-un program funct,ional!

48 / 423

Page 150: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Perechi

I Intern, lista ≡ pereche head-tail

I cons, aplicabil asupra oricaror doi operanzi,pentru generarea unei perechi cu punct (dotted pair)

(cons 0 1) → ’(0 . 1)

’(0 1 2) ≡ ’(0 . (1 . (2 . ())))

I Toretic, perechi reprezentabile ca funct,ii!(vom vedea mai târziu). De fapt, . . .

49 / 423

Page 151: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Perechi

I Intern, lista ≡ pereche head-tail

I cons, aplicabil asupra oricaror doi operanzi,pentru generarea unei perechi cu punct (dotted pair)

(cons 0 1) → ’(0 . 1)

’(0 1 2) ≡ ’(0 . (1 . (2 . ())))

I Toretic, perechi reprezentabile ca funct,ii!(vom vedea mai târziu). De fapt, . . .

49 / 423

Page 152: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Perechi

I Intern, lista ≡ pereche head-tail

I cons, aplicabil asupra oricaror doi operanzi,pentru generarea unei perechi cu punct (dotted pair)

(cons 0 1) → ’(0 . 1)’(0 1 2) ≡ ’(0 . (1 . (2 . ())))

I Toretic, perechi reprezentabile ca funct,ii!(vom vedea mai târziu).

De fapt, . . .

49 / 423

Page 153: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Perechi

I Intern, lista ≡ pereche head-tail

I cons, aplicabil asupra oricaror doi operanzi,pentru generarea unei perechi cu punct (dotted pair)

(cons 0 1) → ’(0 . 1)’(0 1 2) ≡ ’(0 . (1 . (2 . ())))

I Toretic, perechi reprezentabile ca funct,ii!(vom vedea mai târziu).

De fapt, . . .

49 / 423

Page 154: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Perechi

I Intern, lista ≡ pereche head-tail

I cons, aplicabil asupra oricaror doi operanzi,pentru generarea unei perechi cu punct (dotted pair)

(cons 0 1) → ’(0 . 1)’(0 1 2) ≡ ’(0 . (1 . (2 . ())))

I Toretic, perechi reprezentabile ca funct,ii!(vom vedea mai târziu). De fapt, . . .

49 / 423

Page 155: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Universalitatea funct,iilor

I . . . , orice limbaj prevazut exclusiv cu funct,iis, i fara tipuri predefinite este la fel de expresivca orice alt limbaj (în limitele tezei Church-Turing)

I Majoritatea tipurilor uzuale, codificabile directprin intermediul funct,iilor

true

falseBool

(♣ . ♦)

(♥ . ♠)

Pair

(♣ ♦ ♥)

(♥ ♠)List

Functions

50 / 423

Page 156: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Universalitatea funct,iilor

I . . . , orice limbaj prevazut exclusiv cu funct,iis, i fara tipuri predefinite este la fel de expresivca orice alt limbaj (în limitele tezei Church-Turing)

I Majoritatea tipurilor uzuale, codificabile directprin intermediul funct,iilor

true

falseBool

(♣ . ♦)

(♥ . ♠)

Pair

(♣ ♦ ♥)

(♥ ♠)List

Functions

50 / 423

Page 157: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Universalitatea funct,iilor

I . . . , orice limbaj prevazut exclusiv cu funct,iis, i fara tipuri predefinite este la fel de expresivca orice alt limbaj (în limitele tezei Church-Turing)

I Majoritatea tipurilor uzuale, codificabile directprin intermediul funct,iilor

true

falseBool

(♣ . ♦)

(♥ . ♠)

Pair

(♣ ♦ ♥)

(♥ ♠)List

Functions

50 / 423

Page 158: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Expresii s, i evaluare

Liste s, i perechi

Tipare

Omoiconicitate s, i metaprogramare

51 / 423

Page 159: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Caracteristici

I Tipare = modalitatea de definire, manipulares, i verificare a tipurilor dintr-un limbaj

I Existent,a unor tipuri predefinite în Racket(boolean, caracter, numar etc.)

I Întrebari:

I Când se realizeaza verificarea?I Cât de flexibile sunt regulile de tipare?

52 / 423

Page 160: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Caracteristici

I Tipare = modalitatea de definire, manipulares, i verificare a tipurilor dintr-un limbaj

I Existent,a unor tipuri predefinite în Racket(boolean, caracter, numar etc.)

I Întrebari:

I Când se realizeaza verificarea?I Cât de flexibile sunt regulile de tipare?

52 / 423

Page 161: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Caracteristici

I Tipare = modalitatea de definire, manipulares, i verificare a tipurilor dintr-un limbaj

I Existent,a unor tipuri predefinite în Racket(boolean, caracter, numar etc.)

I Întrebari:

I Când se realizeaza verificarea?I Cât de flexibile sunt regulile de tipare?

52 / 423

Page 162: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Caracteristici

I Tipare = modalitatea de definire, manipulares, i verificare a tipurilor dintr-un limbaj

I Existent,a unor tipuri predefinite în Racket(boolean, caracter, numar etc.)

I Întrebari:I Când se realizeaza verificarea?

I Cât de flexibile sunt regulile de tipare?

52 / 423

Page 163: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Caracteristici

I Tipare = modalitatea de definire, manipulares, i verificare a tipurilor dintr-un limbaj

I Existent,a unor tipuri predefinite în Racket(boolean, caracter, numar etc.)

I Întrebari:I Când se realizeaza verificarea?I Cât de flexibile sunt regulile de tipare?

52 / 423

Page 164: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Flexibilitatea regulilor

I Ce produce evaluarea urmatoarei expresii?

(+ 1 "OK")

I Criteriu: flexibilitatea în agregarea valorilor de tipuridiferite

I Racket: verificare rigida — tipare tare (strong)

I Raspuns: eroare!

I Alternativa în alte limbaje — tipare slaba (weak)

I Visual Basic: 1 + "23" = 24

I JavaScript: 1 + "23" = "123"

53 / 423

Page 165: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Flexibilitatea regulilor

I Ce produce evaluarea urmatoarei expresii?

(+ 1 "OK")

I Criteriu: flexibilitatea în agregarea valorilor de tipuridiferite

I Racket: verificare rigida — tipare tare (strong)

I Raspuns: eroare!

I Alternativa în alte limbaje — tipare slaba (weak)

I Visual Basic: 1 + "23" = 24

I JavaScript: 1 + "23" = "123"

53 / 423

Page 166: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Flexibilitatea regulilor

I Ce produce evaluarea urmatoarei expresii?

(+ 1 "OK")

I Criteriu: flexibilitatea în agregarea valorilor de tipuridiferite

I Racket: verificare rigida — tipare tare (strong)

I Raspuns: eroare!

I Alternativa în alte limbaje — tipare slaba (weak)

I Visual Basic: 1 + "23" = 24

I JavaScript: 1 + "23" = "123"

53 / 423

Page 167: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Flexibilitatea regulilor

I Ce produce evaluarea urmatoarei expresii?

(+ 1 "OK")

I Criteriu: flexibilitatea în agregarea valorilor de tipuridiferite

I Racket: verificare rigida — tipare tare (strong)

I Raspuns: eroare!

I Alternativa în alte limbaje — tipare slaba (weak)

I Visual Basic: 1 + "23" = 24

I JavaScript: 1 + "23" = "123"

53 / 423

Page 168: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Flexibilitatea regulilor

I Ce produce evaluarea urmatoarei expresii?

(+ 1 "OK")

I Criteriu: flexibilitatea în agregarea valorilor de tipuridiferite

I Racket: verificare rigida — tipare tare (strong)

I Raspuns: eroare!

I Alternativa în alte limbaje — tipare slaba (weak)

I Visual Basic: 1 + "23" = 24

I JavaScript: 1 + "23" = "123"

53 / 423

Page 169: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Flexibilitatea regulilor

I Ce produce evaluarea urmatoarei expresii?

(+ 1 "OK")

I Criteriu: flexibilitatea în agregarea valorilor de tipuridiferite

I Racket: verificare rigida — tipare tare (strong)

I Raspuns: eroare!

I Alternativa în alte limbaje — tipare slaba (weak)I Visual Basic: 1 + "23" = 24

I JavaScript: 1 + "23" = "123"

53 / 423

Page 170: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Flexibilitatea regulilor

I Ce produce evaluarea urmatoarei expresii?

(+ 1 "OK")

I Criteriu: flexibilitatea în agregarea valorilor de tipuridiferite

I Racket: verificare rigida — tipare tare (strong)

I Raspuns: eroare!

I Alternativa în alte limbaje — tipare slaba (weak)I Visual Basic: 1 + "23" = 24

I JavaScript: 1 + "23" = "123"

53 / 423

Page 171: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Momentul verificarii

I Ce produce evaluarea urmatoarei expresii?

(+ 1 (if condition 2 "OK"))

I Racket: verificare în momentul aplicarii unui operatorpredefinit — tipare dinamica

I Raspunsul depinde de valoarea lui condition:

I true: 3I false: Eroare, imposibilitatea adunarii unui numar

cu un s, ir

I Posibilitatea evaluarii cu succes a unei expresiice cont,ine subexpresii eronate, cât timp celedin urma nu sunt evaluate

54 / 423

Page 172: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Momentul verificarii

I Ce produce evaluarea urmatoarei expresii?

(+ 1 (if condition 2 "OK"))

I Racket: verificare în momentul aplicarii unui operatorpredefinit — tipare dinamica

I Raspunsul depinde de valoarea lui condition:

I true: 3I false: Eroare, imposibilitatea adunarii unui numar

cu un s, ir

I Posibilitatea evaluarii cu succes a unei expresiice cont,ine subexpresii eronate, cât timp celedin urma nu sunt evaluate

54 / 423

Page 173: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Momentul verificarii

I Ce produce evaluarea urmatoarei expresii?

(+ 1 (if condition 2 "OK"))

I Racket: verificare în momentul aplicarii unui operatorpredefinit — tipare dinamica

I Raspunsul depinde de valoarea lui condition:

I true: 3I false: Eroare, imposibilitatea adunarii unui numar

cu un s, ir

I Posibilitatea evaluarii cu succes a unei expresiice cont,ine subexpresii eronate, cât timp celedin urma nu sunt evaluate

54 / 423

Page 174: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Momentul verificarii

I Ce produce evaluarea urmatoarei expresii?

(+ 1 (if condition 2 "OK"))

I Racket: verificare în momentul aplicarii unui operatorpredefinit — tipare dinamica

I Raspunsul depinde de valoarea lui condition:I true: 3

I false: Eroare, imposibilitatea adunarii unui numarcu un s, ir

I Posibilitatea evaluarii cu succes a unei expresiice cont,ine subexpresii eronate, cât timp celedin urma nu sunt evaluate

54 / 423

Page 175: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Momentul verificarii

I Ce produce evaluarea urmatoarei expresii?

(+ 1 (if condition 2 "OK"))

I Racket: verificare în momentul aplicarii unui operatorpredefinit — tipare dinamica

I Raspunsul depinde de valoarea lui condition:I true: 3I false: Eroare, imposibilitatea adunarii unui numar

cu un s, ir

I Posibilitatea evaluarii cu succes a unei expresiice cont,ine subexpresii eronate, cât timp celedin urma nu sunt evaluate

54 / 423

Page 176: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Momentul verificarii

I Ce produce evaluarea urmatoarei expresii?

(+ 1 (if condition 2 "OK"))

I Racket: verificare în momentul aplicarii unui operatorpredefinit — tipare dinamica

I Raspunsul depinde de valoarea lui condition:I true: 3I false: Eroare, imposibilitatea adunarii unui numar

cu un s, ir

I Posibilitatea evaluarii cu succes a unei expresiice cont,ine subexpresii eronate, cât timp celedin urma nu sunt evaluate

54 / 423

Page 177: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Expresii s, i evaluare

Liste s, i perechi

Tipare

Omoiconicitate s, i metaprogramare

55 / 423

Page 178: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Omoiconicitate s, i metaprogramare

I Corepondent,a între sintaxa programuluis, i strucura de date fundamentala (lista)

I Racket — limbaj omoiconic(homo = aceeas, i, icon = reprezentare)

I Manipularea listelor ∼ manipularea codului

I Metaprogramare: posibilitatea programuluide a se autorescrie

56 / 423

Page 179: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Omoiconicitate s, i metaprogramare

I Corepondent,a între sintaxa programuluis, i strucura de date fundamentala (lista)

I Racket — limbaj omoiconic(homo = aceeas, i, icon = reprezentare)

I Manipularea listelor ∼ manipularea codului

I Metaprogramare: posibilitatea programuluide a se autorescrie

56 / 423

Page 180: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Omoiconicitate s, i metaprogramare

I Corepondent,a între sintaxa programuluis, i strucura de date fundamentala (lista)

I Racket — limbaj omoiconic(homo = aceeas, i, icon = reprezentare)

I Manipularea listelor ∼ manipularea codului

I Metaprogramare: posibilitatea programuluide a se autorescrie

56 / 423

Page 181: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Omoiconicitate s, i metaprogramare

I Corepondent,a între sintaxa programuluis, i strucura de date fundamentala (lista)

I Racket — limbaj omoiconic(homo = aceeas, i, icon = reprezentare)

I Manipularea listelor ∼ manipularea codului

I Metaprogramare: posibilitatea programuluide a se autorescrie

56 / 423

Page 182: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemplu de metaprogramare

1 (define plus (list '+ 3 2))

; '(+ 3 2)

2 (eval plus) ; 5

3

4 (define minus (cons '- (cdr plus))) ; '(- 3 2)

5 (eval minus) ; 1

Fort,area evaluarii de catre eval

57 / 423

Page 183: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemplu de metaprogramare

1 (define plus (list '+ 3 2)) ; '(+ 3 2)

2 (eval plus) ; 5

3

4 (define minus (cons '- (cdr plus))) ; '(- 3 2)

5 (eval minus) ; 1

Fort,area evaluarii de catre eval

57 / 423

Page 184: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemplu de metaprogramare

1 (define plus (list '+ 3 2)) ; '(+ 3 2)

2 (eval plus) ; 5

3

4 (define minus (cons '- (cdr plus))) ; '(- 3 2)

5 (eval minus) ; 1

Fort,area evaluarii de catre eval

57 / 423

Page 185: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemplu de metaprogramare

1 (define plus (list '+ 3 2)) ; '(+ 3 2)

2 (eval plus) ; 5

3

4 (define minus (cons '- (cdr plus)))

; '(- 3 2)

5 (eval minus) ; 1

Fort,area evaluarii de catre eval

57 / 423

Page 186: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemplu de metaprogramare

1 (define plus (list '+ 3 2)) ; '(+ 3 2)

2 (eval plus) ; 5

3

4 (define minus (cons '- (cdr plus))) ; '(- 3 2)

5 (eval minus) ; 1

Fort,area evaluarii de catre eval

57 / 423

Page 187: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemplu de metaprogramare

1 (define plus (list '+ 3 2)) ; '(+ 3 2)

2 (eval plus) ; 5

3

4 (define minus (cons '- (cdr plus))) ; '(- 3 2)

5 (eval minus) ; 1

Fort,area evaluarii de catre eval

57 / 423

Page 188: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemplu de metaprogramare

1 (define plus (list '+ 3 2)) ; '(+ 3 2)

2 (eval plus) ; 5

3

4 (define minus (cons '- (cdr plus))) ; '(- 3 2)

5 (eval minus) ; 1

Fort,area evaluarii de catre eval

57 / 423

Page 189: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezumat

I Limbaj omoiconic

I Evaluare bazata pe substitut,ie textuala

I Tipare dinamica s, i tare

58 / 423

Page 190: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Partea III

Recursivitate

59 / 423

Page 191: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Tipuri de recursivitate

Specificul recursivitat,ii pe coada

60 / 423

Page 192: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Tipuri de recursivitate

Specificul recursivitat,ii pe coada

61 / 423

Page 193: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate

I Componenta fundamentala a paradigmei funct,ionale

I Substitut pentru iterarea clasica (for, while etc.),în absent,a starii

I Forma de wishful thinking: “Consider rezolvatasubproblema s, i ma gândesc la cum sa rezolvproblema”

62 / 423

Page 194: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate

I Componenta fundamentala a paradigmei funct,ionale

I Substitut pentru iterarea clasica (for, while etc.),în absent,a starii

I Forma de wishful thinking: “Consider rezolvatasubproblema s, i ma gândesc la cum sa rezolvproblema”

62 / 423

Page 195: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate

I Componenta fundamentala a paradigmei funct,ionale

I Substitut pentru iterarea clasica (for, while etc.),în absent,a starii

I Forma de wishful thinking: “Consider rezolvatasubproblema s, i ma gândesc la cum sa rezolvproblema”

62 / 423

Page 196: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Tipuri de recursivitate

Specificul recursivitat,ii pe coada

63 / 423

Page 197: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe stiva, liniara

5 (define (fact-stack n)

6 (if (= n 1)

7 1

8 (* n (fact-stack (- n 1)))))

1 (fact-stack 3)

2 → (* 3 (fact-stack 2) )

3 → (* 3 (* 2 (fact-stack 1) ) )

4 → (* 3 (* 2 1 ) )

5 → (* 3 2 )

6 → 6

Exemple preluate din: Abelson and Sussman (1996)

6

Stiva procesului

2

1

64 / 423

Page 198: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe stiva, liniara

5 (define (fact-stack n)

6 (if (= n 1)

7 1

8 (* n (fact-stack (- n 1)))))

1 (fact-stack 3)

2 → (* 3 (fact-stack 2) )

3 → (* 3 (* 2 (fact-stack 1) ) )

4 → (* 3 (* 2 1 ) )

5 → (* 3 2 )

6 → 6

Exemple preluate din: Abelson and Sussman (1996)

3

Stiva procesului

2

1

64 / 423

Page 199: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe stiva, liniara

5 (define (fact-stack n)

6 (if (= n 1)

7 1

8 (* n (fact-stack (- n 1)))))

1 (fact-stack 3)

2 → (* 3 (fact-stack 2) )

3 → (* 3 (* 2 (fact-stack 1) ) )

4 → (* 3 (* 2 1 ) )

5 → (* 3 2 )

6 → 6

Exemple preluate din: Abelson and Sussman (1996)

3

Stiva procesului

2

1

64 / 423

Page 200: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe stiva, liniara

5 (define (fact-stack n)

6 (if (= n 1)

7 1

8 (* n (fact-stack (- n 1)))))

1 (fact-stack 3)

2 → (* 3 (fact-stack 2) )

3 → (* 3 (* 2 (fact-stack 1) ) )

4 → (* 3 (* 2 1 ) )

5 → (* 3 2 )

6 → 6

Exemple preluate din: Abelson and Sussman (1996)

3

Stiva procesului

2

1

64 / 423

Page 201: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe stiva, liniara

5 (define (fact-stack n)

6 (if (= n 1)

7 1

8 (* n (fact-stack (- n 1)))))

1 (fact-stack 3)

2 → (* 3 (fact-stack 2) )

3 → (* 3 (* 2 (fact-stack 1) ) )

4 → (* 3 (* 2 1 ) )

5 → (* 3 2 )

6 → 6

Exemple preluate din: Abelson and Sussman (1996)

3

Stiva procesului

2

1

64 / 423

Page 202: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe stiva, liniara

5 (define (fact-stack n)

6 (if (= n 1)

7 1

8 (* n (fact-stack (- n 1)))))

1 (fact-stack 3)

2 → (* 3 (fact-stack 2) )

3 → (* 3 (* 2 (fact-stack 1) ) )

4 → (* 3 (* 2 1 ) )

5 → (* 3 2 )

6 → 6

Exemple preluate din: Abelson and Sussman (1996)

3

Stiva procesului

2

1

64 / 423

Page 203: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe stiva, liniara

5 (define (fact-stack n)

6 (if (= n 1)

7 1

8 (* n (fact-stack (- n 1)))))

1 (fact-stack 3)

2 → (* 3 (fact-stack 2) )

3 → (* 3 (* 2 (fact-stack 1) ) )

4 → (* 3 (* 2 1 ) )

5 → (* 3 2 )

6 → 6

Exemple preluate din: Abelson and Sussman (1996)

3

Stiva procesului

2

1

64 / 423

Page 204: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe stiva, liniara

5 (define (fact-stack n)

6 (if (= n 1)

7 1

8 (* n (fact-stack (- n 1)))))

1 (fact-stack 3)

2 → (* 3 (fact-stack 2) )

3 → (* 3 (* 2 (fact-stack 1) ) )

4 → (* 3 (* 2 1 ) )

5 → (* 3 2 )

6 → 6

Exemple preluate din: Abelson and Sussman (1996)

3

Stiva procesului

2

1

64 / 423

Page 205: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe stiva, liniara

5 (define (fact-stack n)

6 (if (= n 1)

7 1

8 (* n (fact-stack (- n 1)))))

1 (fact-stack 3)

2 → (* 3 (fact-stack 2) )

3 → (* 3 (* 2 (fact-stack 1) ) )

4 → (* 3 (* 2 1 ) )

5 → (* 3 2 )

6 → 6

Exemple preluate din: Abelson and Sussman (1996)

3

Stiva procesului

2

1

64 / 423

Page 206: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe stiva, liniara

5 (define (fact-stack n)

6 (if (= n 1)

7 1

8 (* n (fact-stack (- n 1)))))

1 (fact-stack 3)

2 → (* 3 (fact-stack 2) )

3 → (* 3 (* 2 (fact-stack 1) ) )

4 → (* 3 (* 2 1 ) )

5 → (* 3 2 )

6 → 6

Exemple preluate din: Abelson and Sussman (1996)

3

Stiva procesului

2

1

64 / 423

Page 207: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe stiva, liniara

5 (define (fact-stack n)

6 (if (= n 1)

7 1

8 (* n (fact-stack (- n 1)))))

1 (fact-stack 3)

2 → (* 3 (fact-stack 2) )

3 → (* 3 (* 2 (fact-stack 1) ) )

4 → (* 3 (* 2 1 ) )

5 → (* 3 2 )

6 → 6

Exemple preluate din: Abelson and Sussman (1996)

6

Stiva procesului

2

1

64 / 423

Page 208: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe stiva, liniara

I Depunerea pe stiva a unor valori pe avansulîn recursivitate

I Utilizarea acestora pentru calculul propriu-zis,pe revenirea din recursivitate

I Spat,iul ocupat pe stiva: Θ(n)

I Numarul de operat,ii: Θ(n)

I Informat,ie “ascunsa”, implicita, despre stare

65 / 423

Page 209: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe stiva, liniara

I Depunerea pe stiva a unor valori pe avansulîn recursivitate

I Utilizarea acestora pentru calculul propriu-zis,pe revenirea din recursivitate

I Spat,iul ocupat pe stiva: Θ(n)

I Numarul de operat,ii: Θ(n)

I Informat,ie “ascunsa”, implicita, despre stare

65 / 423

Page 210: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe stiva, liniara

I Depunerea pe stiva a unor valori pe avansulîn recursivitate

I Utilizarea acestora pentru calculul propriu-zis,pe revenirea din recursivitate

I Spat,iul ocupat pe stiva: Θ(n)

I Numarul de operat,ii: Θ(n)

I Informat,ie “ascunsa”, implicita, despre stare

65 / 423

Page 211: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe stiva, liniara

I Depunerea pe stiva a unor valori pe avansulîn recursivitate

I Utilizarea acestora pentru calculul propriu-zis,pe revenirea din recursivitate

I Spat,iul ocupat pe stiva: Θ(n)

I Numarul de operat,ii: Θ(n)

I Informat,ie “ascunsa”, implicita, despre stare

65 / 423

Page 212: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe stiva, liniara

I Depunerea pe stiva a unor valori pe avansulîn recursivitate

I Utilizarea acestora pentru calculul propriu-zis,pe revenirea din recursivitate

I Spat,iul ocupat pe stiva: Θ(n)

I Numarul de operat,ii: Θ(n)

I Informat,ie “ascunsa”, implicita, despre stare

65 / 423

Page 213: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialIterare clasica

1: procedure FACTORIAL(n)2: product ← 13: i ← 14: while i ≤ n do5: product ← product · i6: i ← i + 17: end while8: return product9: end procedure

I Starea programului: variabilele i s, i product

I Spat,iu constant pe stiva!

I Cum putem exploata aceasta idee?

66 / 423

Page 214: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialIterare clasica

1: procedure FACTORIAL(n)2: product ← 13: i ← 14: while i ≤ n do5: product ← product · i6: i ← i + 17: end while8: return product9: end procedure

I Starea programului: variabilele i s, i product

I Spat,iu constant pe stiva!

I Cum putem exploata aceasta idee?

66 / 423

Page 215: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialIterare clasica

1: procedure FACTORIAL(n)2: product ← 13: i ← 14: while i ≤ n do5: product ← product · i6: i ← i + 17: end while8: return product9: end procedure

I Starea programului: variabilele i s, i product

I Spat,iu constant pe stiva!

I Cum putem exploata aceasta idee?

66 / 423

Page 216: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialIterare clasica

1: procedure FACTORIAL(n)2: product ← 13: i ← 14: while i ≤ n do5: product ← product · i6: i ← i + 17: end while8: return product9: end procedure

I Starea programului: variabilele i s, i product

I Spat,iu constant pe stiva!

I Cum putem exploata aceasta idee?

66 / 423

Page 217: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe coada

18 (define (fact-tail n)

19 (fact-tail-helper 1 1 n))

20

21 (define (fact-tail-helper product i n)

22 (if (> i n)

23 product

24 (fact-tail-helper (* product i)

25 (+ i 1)

26 n)))

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 61, 1, 3

Stiva aparenta

1, 2, 3

2, 3, 3

6, 4, 3

67 / 423

Page 218: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe coada

18 (define (fact-tail n)

19 (fact-tail-helper 1 1 n))

20

21 (define (fact-tail-helper product i n)

22 (if (> i n)

23 product

24 (fact-tail-helper (* product i)

25 (+ i 1)

26 n)))

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 6

1, 1, 3

Stiva aparenta

1, 2, 3

2, 3, 3

6, 4, 3

67 / 423

Page 219: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe coada

18 (define (fact-tail n)

19 (fact-tail-helper 1 1 n))

20

21 (define (fact-tail-helper product i n)

22 (if (> i n)

23 product

24 (fact-tail-helper (* product i)

25 (+ i 1)

26 n)))

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 6

1, 1, 3

Stiva aparenta

1, 2, 3

2, 3, 3

6, 4, 3

67 / 423

Page 220: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe coada

18 (define (fact-tail n)

19 (fact-tail-helper 1 1 n))

20

21 (define (fact-tail-helper product i n)

22 (if (> i n)

23 product

24 (fact-tail-helper (* product i)

25 (+ i 1)

26 n)))

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 6

1, 1, 3

Stiva aparenta

1, 2, 3

2, 3, 3

6, 4, 3

67 / 423

Page 221: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe coada

18 (define (fact-tail n)

19 (fact-tail-helper 1 1 n))

20

21 (define (fact-tail-helper product i n)

22 (if (> i n)

23 product

24 (fact-tail-helper (* product i)

25 (+ i 1)

26 n)))

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 6

1, 1, 3

Stiva aparenta

1, 2, 3

2, 3, 3

6, 4, 3

67 / 423

Page 222: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe coada

18 (define (fact-tail n)

19 (fact-tail-helper 1 1 n))

20

21 (define (fact-tail-helper product i n)

22 (if (> i n)

23 product

24 (fact-tail-helper (* product i)

25 (+ i 1)

26 n)))

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 6

1, 1, 3

Stiva aparenta

1, 2, 3

2, 3, 3

6, 4, 3

67 / 423

Page 223: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe coada

18 (define (fact-tail n)

19 (fact-tail-helper 1 1 n))

20

21 (define (fact-tail-helper product i n)

22 (if (> i n)

23 product

24 (fact-tail-helper (* product i)

25 (+ i 1)

26 n)))

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 6

1, 1, 3

Stiva aparenta

1, 2, 3

2, 3, 3

6, 4, 3

67 / 423

Page 224: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe coada

18 (define (fact-tail n)

19 (fact-tail-helper 1 1 n))

20

21 (define (fact-tail-helper product i n)

22 (if (> i n)

23 product

24 (fact-tail-helper (* product i)

25 (+ i 1)

26 n)))

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 6

1, 1, 3

Stiva aparenta

1, 2, 3

2, 3, 3

6, 4, 3

67 / 423

Page 225: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe coada

18 (define (fact-tail n)

19 (fact-tail-helper 1 1 n))

20

21 (define (fact-tail-helper product i n)

22 (if (> i n)

23 product

24 (fact-tail-helper (* product i)

25 (+ i 1)

26 n)))

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 61, 1, 3

Stiva aparenta

1, 2, 3

2, 3, 3

6

67 / 423

Page 226: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe coada

18 (define (fact-tail n)

19 (fact-tail-helper 1 1 n))

20

21 (define (fact-tail-helper product i n)

22 (if (> i n)

23 product

24 (fact-tail-helper (* product i)

25 (+ i 1)

26 n)))

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 61, 1, 3

Stiva aparenta

1, 2, 3

6

6, 4, 3

67 / 423

Page 227: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe coada

18 (define (fact-tail n)

19 (fact-tail-helper 1 1 n))

20

21 (define (fact-tail-helper product i n)

22 (if (> i n)

23 product

24 (fact-tail-helper (* product i)

25 (+ i 1)

26 n)))

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 61, 1, 3

Stiva aparenta

6

2, 3, 3

6, 4, 3

67 / 423

Page 228: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia factorialRecursivitate pe coada

18 (define (fact-tail n)

19 (fact-tail-helper 1 1 n))

20

21 (define (fact-tail-helper product i n)

22 (if (> i n)

23 product

24 (fact-tail-helper (* product i)

25 (+ i 1)

26 n)))

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 66

Stiva aparenta

1, 2, 3

2, 3, 3

6, 4, 3

67 / 423

Page 229: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe coadaI Calcul realizat pe avansul în recursivitate

I Aparent, transportarea neschimbata a valorii celeimai adânci aplicat,ii recursive, catre prima

I În realitate, tail call optimization: înlocuirea fiecaruiapel cu urmatorul

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 6

68 / 423

Page 230: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe coadaI Calcul realizat pe avansul în recursivitate

I Aparent, transportarea neschimbata a valorii celeimai adânci aplicat,ii recursive, catre prima

I În realitate, tail call optimization: înlocuirea fiecaruiapel cu urmatorul

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 6

1, 1, 3

Stiva reala(tail call optimization)

68 / 423

Page 231: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe coadaI Calcul realizat pe avansul în recursivitate

I Aparent, transportarea neschimbata a valorii celeimai adânci aplicat,ii recursive, catre prima

I În realitate, tail call optimization: înlocuirea fiecaruiapel cu urmatorul

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 6

1, 1, 3

Stiva reala(tail call optimization)

68 / 423

Page 232: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe coadaI Calcul realizat pe avansul în recursivitate

I Aparent, transportarea neschimbata a valorii celeimai adânci aplicat,ii recursive, catre prima

I În realitate, tail call optimization: înlocuirea fiecaruiapel cu urmatorul

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 6

1, 2, 3

Stiva reala(tail call optimization)

68 / 423

Page 233: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe coadaI Calcul realizat pe avansul în recursivitate

I Aparent, transportarea neschimbata a valorii celeimai adânci aplicat,ii recursive, catre prima

I În realitate, tail call optimization: înlocuirea fiecaruiapel cu urmatorul

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 6

1, 2, 3

Stiva reala(tail call optimization)

68 / 423

Page 234: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe coadaI Calcul realizat pe avansul în recursivitate

I Aparent, transportarea neschimbata a valorii celeimai adânci aplicat,ii recursive, catre prima

I În realitate, tail call optimization: înlocuirea fiecaruiapel cu urmatorul

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 6

2, 3, 3

Stiva reala(tail call optimization)

68 / 423

Page 235: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe coadaI Calcul realizat pe avansul în recursivitate

I Aparent, transportarea neschimbata a valorii celeimai adânci aplicat,ii recursive, catre prima

I În realitate, tail call optimization: înlocuirea fiecaruiapel cu urmatorul

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 6

2, 3, 3

Stiva reala(tail call optimization)

68 / 423

Page 236: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe coada

I Calcul realizat pe avansul în recursivitate

I Aparent, transportarea neschimbata a valorii celeimai adânci aplicat,ii recursive, catre prima

I În realitate, tail call optimization: înlocuirea fiecaruiapel cu urmatorul

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 6

6, 4, 3

Stiva reala(tail call optimization)

68 / 423

Page 237: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe coada

I Calcul realizat pe avansul în recursivitate

I Aparent, transportarea neschimbata a valorii celeimai adânci aplicat,ii recursive, catre prima

I În realitate, tail call optimization: înlocuirea fiecaruiapel cu urmatorul

1 (fact-tail-helper 1 1 3)

2 → (fact-tail-helper 1 2 3)

3 → (fact-tail-helper 2 3 3)

4 → (fact-tail-helper 6 4 3)

5 → 6

6

Stiva reala(tail call optimization)

68 / 423

Page 238: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe coada (cont.)

I Numarul de operat,ii: Θ(n)

I Spat,iul ocupat pe stiva: Θ(1)

I În afara de economisirea spat,iului, economisireatimpului necesar redimensionarii stivei!

I Diferent,a fat,a de iterarea clasica: transmitereaexplicita a starii ca parametru

69 / 423

Page 239: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe coada (cont.)

I Numarul de operat,ii: Θ(n)

I Spat,iul ocupat pe stiva: Θ(1)

I În afara de economisirea spat,iului, economisireatimpului necesar redimensionarii stivei!

I Diferent,a fat,a de iterarea clasica: transmitereaexplicita a starii ca parametru

69 / 423

Page 240: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe coada (cont.)

I Numarul de operat,ii: Θ(n)

I Spat,iul ocupat pe stiva: Θ(1)

I În afara de economisirea spat,iului, economisireatimpului necesar redimensionarii stivei!

I Diferent,a fat,a de iterarea clasica: transmitereaexplicita a starii ca parametru

69 / 423

Page 241: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe coada (cont.)

I Numarul de operat,ii: Θ(n)

I Spat,iul ocupat pe stiva: Θ(1)

I În afara de economisirea spat,iului, economisireatimpului necesar redimensionarii stivei!

I Diferent,a fat,a de iterarea clasica: transmitereaexplicita a starii ca parametru

69 / 423

Page 242: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii s, i procese

I Funct,ie: descriere statica a unor modalitat,ide transformare

I Proces: Funct,ie în execut,ie, aspectul ei dinamic

I Posibilitatea unei funct,ii textual recursive(e.g., pe coada) de a genera un proces iterativ!

70 / 423

Page 243: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii s, i procese

I Funct,ie: descriere statica a unor modalitat,ide transformare

I Proces: Funct,ie în execut,ie, aspectul ei dinamic

I Posibilitatea unei funct,ii textual recursive(e.g., pe coada) de a genera un proces iterativ!

70 / 423

Page 244: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii s, i procese

I Funct,ie: descriere statica a unor modalitat,ide transformare

I Proces: Funct,ie în execut,ie, aspectul ei dinamic

I Posibilitatea unei funct,ii textual recursive(e.g., pe coada) de a genera un proces iterativ!

70 / 423

Page 245: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia FibonacciRecursivitate pe stiva, arborescenta

36 (define (fib-stack n)

37 (cond [(= n 0) 0]

38 [(= n 1) 1]

39 [else (+ (fib-stack (- n 1))

40 (fib-stack (- n 2)))]))

71 / 423

Page 246: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

72 / 423

Page 247: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

72 / 423

Page 248: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

72 / 423

Page 249: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

(fib 3)

72 / 423

Page 250: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

(fib 3)

(fib 2)

72 / 423

Page 251: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

(fib 3)

(fib 2)

(fib 1)

72 / 423

Page 252: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

(fib 3)

(fib 2)

1

72 / 423

Page 253: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

(fib 3)

(fib 2)

(fib 0)1

72 / 423

Page 254: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

(fib 3)

(fib 2)

01

72 / 423

Page 255: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

(fib 3)

(fib 2)

01

72 / 423

Page 256: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

(fib 3)

1

01

72 / 423

Page 257: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

(fib 3)

(fib 1)1

01

72 / 423

Page 258: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

(fib 3)

11

01

72 / 423

Page 259: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

(fib 3)

11

01

72 / 423

Page 260: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

2

11

01

72 / 423

Page 261: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

(fib 2)2

11

01

72 / 423

Page 262: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

(fib 2)

(fib 1)

2

11

01

72 / 423

Page 263: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

(fib 2)

1

2

11

01

72 / 423

Page 264: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

(fib 2)

(fib 0)1

2

11

01

72 / 423

Page 265: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

(fib 2)

01

2

11

01

72 / 423

Page 266: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

(fib 2)

01

2

11

01

72 / 423

Page 267: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

1

01

2

11

01

72 / 423

Page 268: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 4)

1

01

2

11

01

72 / 423

Page 269: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

3

1

01

2

11

01

72 / 423

Page 270: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

(fib 3)

(fib 1)(fib 2)

(fib 0)(fib 1)

3

1

01

2

11

01

72 / 423

Page 271: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

2

11

01

3

1

01

2

11

01

72 / 423

Page 272: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

(fib 5)

2

11

01

3

1

01

2

11

01

72 / 423

Page 273: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

5

2

11

01

3

1

01

2

11

01

72 / 423

Page 274: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia Fibonacci (cont.)Recursivitate pe stiva, arborescenta

5

2

11

01

3

1

01

2

11

01 duplicare

72 / 423

Page 275: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe stiva, arborescenta

I Spat,iul ocupat pe stiva: lungimea unei cai din arbore:Θ(n)

I În arborele cu radacina fib(n):

I numarul frunzelor: fib(n + 1)

I numarul nodurilor: 2fib(n + 1)−1

I Numarul de operat,ii: Θ(fib(n + 1)) = Θ(φn)

(φ — numarul de aur)

I Cres, tere exponent,iala a numarului de operat,ii!

73 / 423

Page 276: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe stiva, arborescenta

I Spat,iul ocupat pe stiva: lungimea unei cai din arbore:Θ(n)

I În arborele cu radacina fib(n):

I numarul frunzelor: fib(n + 1)

I numarul nodurilor: 2fib(n + 1)−1

I Numarul de operat,ii: Θ(fib(n + 1)) = Θ(φn)

(φ — numarul de aur)

I Cres, tere exponent,iala a numarului de operat,ii!

73 / 423

Page 277: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe stiva, arborescenta

I Spat,iul ocupat pe stiva: lungimea unei cai din arbore:Θ(n)

I În arborele cu radacina fib(n):I numarul frunzelor: fib(n + 1)

I numarul nodurilor: 2fib(n + 1)−1

I Numarul de operat,ii: Θ(fib(n + 1)) = Θ(φn)

(φ — numarul de aur)

I Cres, tere exponent,iala a numarului de operat,ii!

73 / 423

Page 278: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe stiva, arborescenta

I Spat,iul ocupat pe stiva: lungimea unei cai din arbore:Θ(n)

I În arborele cu radacina fib(n):I numarul frunzelor: fib(n + 1)

I numarul nodurilor: 2fib(n + 1)−1

I Numarul de operat,ii: Θ(fib(n + 1)) = Θ(φn)

(φ — numarul de aur)

I Cres, tere exponent,iala a numarului de operat,ii!

73 / 423

Page 279: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe stiva, arborescenta

I Spat,iul ocupat pe stiva: lungimea unei cai din arbore:Θ(n)

I În arborele cu radacina fib(n):I numarul frunzelor: fib(n + 1)

I numarul nodurilor: 2fib(n + 1)−1

I Numarul de operat,ii: Θ(fib(n + 1)) = Θ(φn)

(φ — numarul de aur)

I Cres, tere exponent,iala a numarului de operat,ii!

73 / 423

Page 280: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe stiva, arborescenta

I Spat,iul ocupat pe stiva: lungimea unei cai din arbore:Θ(n)

I În arborele cu radacina fib(n):I numarul frunzelor: fib(n + 1)

I numarul nodurilor: 2fib(n + 1)−1

I Numarul de operat,ii: Θ(fib(n + 1)) = Θ(φn)

(φ — numarul de aur)

I Cres, tere exponent,iala a numarului de operat,ii!

73 / 423

Page 281: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ia FibonacciRecursivitate pe coada

50 (define (fib-tail n)

51 (fib-tail-helper 1 0 n))

52

53 (define (fib-tail-helper a b count)

54 (if (= count 0)

55 b

56 (fib-tail-helper (+ a b) a (- count 1))))

74 / 423

Page 282: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe coada

I Numarul de operat,ii: Θ(n)

I Spat,iul ocupat pe stiva: Θ(1)

I Diminuarea numarului de operat,ii de la exponent,ialla liniar!

75 / 423

Page 283: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe coada

I Numarul de operat,ii: Θ(n)

I Spat,iul ocupat pe stiva: Θ(1)

I Diminuarea numarului de operat,ii de la exponent,ialla liniar!

75 / 423

Page 284: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe coada

I Numarul de operat,ii: Θ(n)

I Spat,iul ocupat pe stiva: Θ(1)

I Diminuarea numarului de operat,ii de la exponent,ialla liniar!

75 / 423

Page 285: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe stiva vs. pe coada

Pe stiva, lin./arb.

I Eleganta, adeseaapropiata de specificat,ie

I Ineficienta spat,ials, i/ sau temporal

Pe coadaI Obscura, necesitând

prelucrari specifice

I Eficienta, cel put,inspat,ial

Câteva cursuri mai târziu — o modalitate de exploatareeficienta a recursivitat,ii pe stiva

76 / 423

Page 286: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe stiva vs. pe coada

Pe stiva, lin./arb.

I Eleganta, adeseaapropiata de specificat,ie

I Ineficienta spat,ials, i/ sau temporal

Pe coadaI Obscura, necesitând

prelucrari specifice

I Eficienta, cel put,inspat,ial

Câteva cursuri mai târziu — o modalitate de exploatareeficienta a recursivitat,ii pe stiva

76 / 423

Page 287: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Recursivitate pe stiva vs. pe coada

Pe stiva, lin./arb.

I Eleganta, adeseaapropiata de specificat,ie

I Ineficienta spat,ials, i/ sau temporal

Pe coadaI Obscura, necesitând

prelucrari specifice

I Eficienta, cel put,inspat,ial

Câteva cursuri mai târziu — o modalitate de exploatareeficienta a recursivitat,ii pe stiva

76 / 423

Page 288: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transformarea în recursivitate pe coada

I De obicei, posibila, prin introducerea unui acumulatorca parametru (v. exemplele anterioare)

I În anumite situat,ii, imposibila direct:

1 (define (f x)

2 (if (zero? x)

3 0

4 (g (f (- x 1)))))

5 ; comportamentul lui g depinde

6 ; de parametru

77 / 423

Page 289: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transformarea în recursivitate pe coada

I De obicei, posibila, prin introducerea unui acumulatorca parametru (v. exemplele anterioare)

I În anumite situat,ii, imposibila direct:

1 (define (f x)

2 (if (zero? x)

3 0

4 (g (f (- x 1)))))

5 ; comportamentul lui g depinde

6 ; de parametru

77 / 423

Page 290: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Tipuri de recursivitate

Specificul recursivitat,ii pe coada

78 / 423

Page 291: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe stiva

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-stack L)

3 (if (null? L)

4 L

5 (cons (* (car L) 10)

6 (mult-stack (cdr L)))))

1 (mult-stack ’(1 2))

2 → (cons 10 (mult-stack ’(2)) )

3 → (cons 10 (cons 20 (mult-stack ’())) )

4 → (cons 10 (cons 20 ’() ) )

5 → (cons 10 ’(20) ))

6 → ’(10 20) ; ordinea este corecta

79 / 423

Page 292: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe stiva

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-stack L)

3 (if (null? L)

4 L

5 (cons (* (car L) 10)

6 (mult-stack (cdr L)))))

1 (mult-stack ’(1 2))

2 → (cons 10 (mult-stack ’(2)) )

3 → (cons 10 (cons 20 (mult-stack ’())) )

4 → (cons 10 (cons 20 ’() ) )

5 → (cons 10 ’(20) ))

6 → ’(10 20) ; ordinea este corecta

79 / 423

Page 293: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe stiva

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-stack L)

3 (if (null? L)

4 L

5 (cons (* (car L) 10)

6 (mult-stack (cdr L)))))

1 (mult-stack ’(1 2))

2 → (cons 10 (mult-stack ’(2)) )

3 → (cons 10 (cons 20 (mult-stack ’())) )

4 → (cons 10 (cons 20 ’() ) )

5 → (cons 10 ’(20) ))

6 → ’(10 20) ; ordinea este corecta

79 / 423

Page 294: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe stiva

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-stack L)

3 (if (null? L)

4 L

5 (cons (* (car L) 10)

6 (mult-stack (cdr L)))))

1 (mult-stack ’(1 2))

2 → (cons 10 (mult-stack ’(2)) )

3 → (cons 10 (cons 20 (mult-stack ’())) )

4 → (cons 10 (cons 20 ’() ) )

5 → (cons 10 ’(20) ))

6 → ’(10 20) ; ordinea este corecta

79 / 423

Page 295: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe stiva

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-stack L)

3 (if (null? L)

4 L

5 (cons (* (car L) 10)

6 (mult-stack (cdr L)))))

1 (mult-stack ’(1 2))

2 → (cons 10 (mult-stack ’(2)) )

3 → (cons 10 (cons 20 (mult-stack ’())) )

4 → (cons 10 (cons 20 ’() ) )

5 → (cons 10 ’(20) ))

6 → ’(10 20) ; ordinea este corecta

79 / 423

Page 296: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe stiva

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-stack L)

3 (if (null? L)

4 L

5 (cons (* (car L) 10)

6 (mult-stack (cdr L)))))

1 (mult-stack ’(1 2))

2 → (cons 10 (mult-stack ’(2)) )

3 → (cons 10 (cons 20 (mult-stack ’())) )

4 → (cons 10 (cons 20 ’() ) )

5 → (cons 10 ’(20) ))

6 → ’(10 20) ; ordinea este corecta

79 / 423

Page 297: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe stiva

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-stack L)

3 (if (null? L)

4 L

5 (cons (* (car L) 10)

6 (mult-stack (cdr L)))))

1 (mult-stack ’(1 2))

2 → (cons 10 (mult-stack ’(2)) )

3 → (cons 10 (cons 20 (mult-stack ’())) )

4 → (cons 10 (cons 20 ’() ) )

5 → (cons 10 ’(20) ))

6 → ’(10 20) ; ordinea este corecta

79 / 423

Page 298: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe stiva

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-stack L)

3 (if (null? L)

4 L

5 (cons (* (car L) 10)

6 (mult-stack (cdr L)))))

1 (mult-stack ’(1 2))

2 → (cons 10 (mult-stack ’(2)) )

3 → (cons 10 (cons 20 (mult-stack ’())) )

4 → (cons 10 (cons 20 ’() ) )

5 → (cons 10 ’(20) ))

6 → ’(10 20) ; ordinea este corecta

79 / 423

Page 299: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe stiva

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-stack L)

3 (if (null? L)

4 L

5 (cons (* (car L) 10)

6 (mult-stack (cdr L)))))

1 (mult-stack ’(1 2))

2 → (cons 10 (mult-stack ’(2)) )

3 → (cons 10 (cons 20 (mult-stack ’())) )

4 → (cons 10 (cons 20 ’() ) )

5 → (cons 10 ’(20) ))

6 → ’(10 20) ; ordinea este corecta

79 / 423

Page 300: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe stiva

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-stack L)

3 (if (null? L)

4 L

5 (cons (* (car L) 10)

6 (mult-stack (cdr L)))))

1 (mult-stack ’(1 2))

2 → (cons 10 (mult-stack ’(2)) )

3 → (cons 10 (cons 20 (mult-stack ’())) )

4 → (cons 10 (cons 20 ’() ) )

5 → (cons 10 ’(20) ))

6 → ’(10 20) ; ordinea este corecta

79 / 423

Page 301: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe stiva

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-stack L)

3 (if (null? L)

4 L

5 (cons (* (car L) 10)

6 (mult-stack (cdr L)))))

1 (mult-stack ’(1 2))

2 → (cons 10 (mult-stack ’(2)) )

3 → (cons 10 (cons 20 (mult-stack ’())) )

4 → (cons 10 (cons 20 ’() ) )

5 → (cons 10 ’(20) ))

6 → ’(10 20)

; ordinea este corecta

79 / 423

Page 302: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe stiva

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-stack L)

3 (if (null? L)

4 L

5 (cons (* (car L) 10)

6 (mult-stack (cdr L)))))

1 (mult-stack ’(1 2))

2 → (cons 10 (mult-stack ’(2)) )

3 → (cons 10 (cons 20 (mult-stack ’())) )

4 → (cons 10 (cons 20 ’() ) )

5 → (cons 10 ’(20) ))

6 → ’(10 20) ; ordinea este corecta

79 / 423

Page 303: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe coada

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-tail-helper L Result)

3 (if (null? L)

4 Result

5 (mult-tail-helper (cdr L)

6 (cons (* (car L) 10)

7 Result))))

1 (mult-tail-helper ’(1 2) ’())

2 → (mult-tail-helper ’(2) ’(10))

3 → (mult-tail-helper ’() ’(20 10))

4 → ’(20 10) ; ordinea este inversata

80 / 423

Page 304: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe coada

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-tail-helper L Result)

3 (if (null? L)

4 Result

5 (mult-tail-helper (cdr L)

6 (cons (* (car L) 10)

7 Result))))

1 (mult-tail-helper ’(1 2) ’())

2 → (mult-tail-helper ’(2) ’(10))

3 → (mult-tail-helper ’() ’(20 10))

4 → ’(20 10) ; ordinea este inversata

80 / 423

Page 305: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe coada

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-tail-helper L Result)

3 (if (null? L)

4 Result

5 (mult-tail-helper (cdr L)

6 (cons (* (car L) 10)

7 Result))))

1 (mult-tail-helper ’(1 2) ’())

2 → (mult-tail-helper ’(2) ’(10))

3 → (mult-tail-helper ’() ’(20 10))

4 → ’(20 10) ; ordinea este inversata

80 / 423

Page 306: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe coada

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-tail-helper L Result)

3 (if (null? L)

4 Result

5 (mult-tail-helper (cdr L)

6 (cons (* (car L) 10)

7 Result))))

1 (mult-tail-helper ’(1 2) ’())

2 → (mult-tail-helper ’(2) ’(10))

3 → (mult-tail-helper ’() ’(20 10))

4 → ’(20 10) ; ordinea este inversata

80 / 423

Page 307: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe coada

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-tail-helper L Result)

3 (if (null? L)

4 Result

5 (mult-tail-helper (cdr L)

6 (cons (* (car L) 10)

7 Result))))

1 (mult-tail-helper ’(1 2) ’())

2 → (mult-tail-helper ’(2) ’(10))

3 → (mult-tail-helper ’() ’(20 10))

4 → ’(20 10) ; ordinea este inversata

80 / 423

Page 308: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe coada

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-tail-helper L Result)

3 (if (null? L)

4 Result

5 (mult-tail-helper (cdr L)

6 (cons (* (car L) 10)

7 Result))))

1 (mult-tail-helper ’(1 2) ’())

2 → (mult-tail-helper ’(2) ’(10))

3 → (mult-tail-helper ’() ’(20 10))

4 → ’(20 10) ; ordinea este inversata

80 / 423

Page 309: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe coada

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-tail-helper L Result)

3 (if (null? L)

4 Result

5 (mult-tail-helper (cdr L)

6 (cons (* (car L) 10)

7 Result))))

1 (mult-tail-helper ’(1 2) ’())

2 → (mult-tail-helper ’(2) ’(10))

3 → (mult-tail-helper ’() ’(20 10))

4 → ’(20 10)

; ordinea este inversata

80 / 423

Page 310: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatuluiRecursivitate pe coada

1 ;; Inmulteste cu 10 toate elementele listei L

2 (define (mult-tail-helper L Result)

3 (if (null? L)

4 Result

5 (mult-tail-helper (cdr L)

6 (cons (* (car L) 10)

7 Result))))

1 (mult-tail-helper ’(1 2) ’())

2 → (mult-tail-helper ’(2) ’(10))

3 → (mult-tail-helper ’() ’(20 10))

4 → ’(20 10) ; ordinea este inversata

80 / 423

Page 311: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatului (cont.)Recursivitate pe coada

Alternative pentru conservarea ordinii:

I Inversarea listei finale

1 (if (null? L)

2 (reverse Result)

3 ...)

I Adaugarea elementrului curent la sfârs, itul acumul.

1 (if (null? L)

2 ...

3 (mult-all-iter

4 (cdr L)

5 (append Result

6 (list (* (car L) 10)))))

81 / 423

Page 312: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatului (cont.)Recursivitate pe coada

Alternative pentru conservarea ordinii:

I Inversarea listei finale

1 (if (null? L)

2 (reverse Result)

3 ...)

I Adaugarea elementrului curent la sfârs, itul acumul.

1 (if (null? L)

2 ...

3 (mult-all-iter

4 (cdr L)

5 (append Result

6 (list (* (car L) 10)))))

81 / 423

Page 313: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construirea rezultatului (cont.)Recursivitate pe coada

Alternative pentru conservarea ordinii:

I Inversarea listei finale

1 (if (null? L)

2 (reverse Result)

3 ...)

I Adaugarea elementrului curent la sfârs, itul acumul.

1 (if (null? L)

2 ...

3 (mult-all-iter

4 (cdr L)

5 (append Result

6 (list (* (car L) 10)))))

81 / 423

Page 314: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Costul unei concatenari

1 (define (app A B) ; recursiva pe stiva

2 (if (null? A)

3 B

4 (cons (car A) (app (cdr A) B))))

Numar de operat,ii proport,ional cu lungimea primei liste!

82 / 423

Page 315: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Costul unei concatenari

1 (define (app A B) ; recursiva pe stiva

2 (if (null? A)

3 B

4 (cons (car A) (app (cdr A) B))))

Numar de operat,ii proport,ional cu lungimea primei liste!

82 / 423

Page 316: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Costul concatenarilor repetate

I Asociere la dreapta:

A ++ (B ++ (C ++ ...)...)

Numar de operat,ii proport,ional cu lungimea listeicurente

I Asociere la stânga:

(...(... ++ A) ++ B) ++ C

Numar de operat,ii proport,ional cu lungimea tuturorlistelor concatenate anterior

83 / 423

Page 317: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Costul concatenarilor repetate

I Asociere la dreapta:

A ++ (B ++ (C ++ ...)...)

Numar de operat,ii proport,ional cu lungimea listeicurente

I Asociere la stânga:

(...(... ++ A) ++ B) ++ C

Numar de operat,ii proport,ional cu lungimea tuturorlistelor concatenate anterior

83 / 423

Page 318: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Costul concatenarilor repetate

I Asociere la dreapta:

A ++ (B ++ (C ++ ...)...)

Numar de operat,ii proport,ional cu lungimea listeicurente

I Asociere la stânga:

(...(... ++ A) ++ B) ++ C

Numar de operat,ii proport,ional cu lungimea tuturorlistelor concatenate anterior

83 / 423

Page 319: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Costul concatenarilor repetate

I Asociere la dreapta:

A ++ (B ++ (C ++ ...)...)

Numar de operat,ii proport,ional cu lungimea listeicurente

I Asociere la stânga:

(...(... ++ A) ++ B) ++ C

Numar de operat,ii proport,ional cu lungimea tuturorlistelor concatenate anterior

83 / 423

Page 320: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Consecint,e asupra recursivitat,ii pe coada1 (define (mult-tail-helper L Result)

2 (if (null? L)

3 Result

4 (mult-tail-helper

5 (cdr L)

6 (append Result

7 (list (* (car L) 10))))))

1 (mult-tail-helper '(1 2 3) '())

2 → (mult-tail-helper '(2 3) (append '() '(10)))

3 → (mult-tail-helper '(3) (append '(10) '(20)))

4 → (mult-tail-helper '() (append '(10 20)

5 '(30)))

6 → (mult-tail-helper '() '(10 20 30))

7 → ’(10 20 30)

84 / 423

Page 321: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Consecint,e asupra recursivitat,ii pe coada (cont.)

I Parcurgerea întregului acumulator anterior,pentru construirea celui nou!

I Numarul de elemente parcurse:

0 + 1 + . . .+ (n−1) = Θ(n2)!

I Astfel, preferabila varianta inversarii,s, i nu cea a adaugarii la sfârs, it

85 / 423

Page 322: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Consecint,e asupra recursivitat,ii pe coada (cont.)

I Parcurgerea întregului acumulator anterior,pentru construirea celui nou!

I Numarul de elemente parcurse:

0 + 1 + . . .+ (n−1) = Θ(n2)!

I Astfel, preferabila varianta inversarii,s, i nu cea a adaugarii la sfârs, it

85 / 423

Page 323: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Consecint,e asupra recursivitat,ii pe coada (cont.)

I Parcurgerea întregului acumulator anterior,pentru construirea celui nou!

I Numarul de elemente parcurse:

0 + 1 + . . .+ (n−1) = Θ(n2)!

I Astfel, preferabila varianta inversarii,s, i nu cea a adaugarii la sfârs, it

85 / 423

Page 324: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezumat

I Diverse tipuri de recursivitateI pe stiva (liniara/ arborescenta)I pe coada

I Recursivitate pe stiva: de obicei, . . .I ElegantaI Ineficienta spat,ial s, i/ sau temporal

I Recursivitate pe coada: de obicei, . . .I Mai put,in lizibila decât cea pe stivaI Necesita prelucrari suplimentare (e.g. inversare)I Eficienta spat,ial s, i/ sau temporal

86 / 423

Page 325: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Bibliografie

Abelson, H. and Sussman, G. J. (1996). Structure andInterpretation of Computer Programs. MIT Press,Cambridge, MA, USA, 2nd edition.

87 / 423

Page 326: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Partea IV

Funct,ii ca valori de prim rang.Funct,ionale

88 / 423

Page 327: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Motivat,ie

Funct,ii ca valori de prim rang

Funct,ionale

Calculul lambda

89 / 423

Page 328: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Motivat,ie

Funct,ii ca valori de prim rang

Funct,ionale

Calculul lambda

90 / 423

Page 329: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abstractizare funct,ionala

1 (define ( double n)

2 (* n 2))

1 (define ( double n)

2 (+ n n))

(* 5 2) (* 10 2)

I Generalizare, de la dublarea valorilor particulare,la însus, i conceptul de dublare

I Rezultat: funct,ia double, substituibila cu orice altafunct,ie cu acelas, i comportament

I Mai precis, double = abstractizare funct,ionala

91 / 423

Page 330: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abstractizare funct,ionala

1 (define ( double n)

2 (* n 2))

1 (define ( double n)

2 (+ n n))

(* 5 2) (* 10 2)

I Generalizare, de la dublarea valorilor particulare,la însus, i conceptul de dublare

I Rezultat: funct,ia double

, substituibila cu orice altafunct,ie cu acelas, i comportament

I Mai precis, double = abstractizare funct,ionala

91 / 423

Page 331: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abstractizare funct,ionala

1 (define ( double n)

2 (* n 2))

1 (define ( double n)

2 (+ n n))

(* 5 2) (* 10 2)

I Generalizare, de la dublarea valorilor particulare,la însus, i conceptul de dublare

I Rezultat: funct,ia double

, substituibila cu orice altafunct,ie cu acelas, i comportament

I Mai precis, double = abstractizare funct,ionala

91 / 423

Page 332: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abstractizare funct,ionala

1 (define ( double n)

2 (* n 2))

1 (define ( double n)

2 (+ n n))

(* 5 2) (* 10 2)

I Generalizare, de la dublarea valorilor particulare,la însus, i conceptul de dublare

I Rezultat: funct,ia double, substituibila cu orice altafunct,ie cu acelas, i comportament

I Mai precis, double = abstractizare funct,ionala

91 / 423

Page 333: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abstractizare funct,ionala

1 (define ( double n)

2 (* n 2))

1 (define ( double n)

2 (+ n n))

(* 5 2) (* 10 2)

I Generalizare, de la dublarea valorilor particulare,la însus, i conceptul de dublare

I Rezultat: funct,ia double, substituibila cu orice altafunct,ie cu acelas, i comportament

I Mai precis, double = abstractizare funct,ionala

double

91 / 423

Page 334: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Un nivel mai sus1 ;; Inmulteste cu 10 toate elementele listei L

2 ;; '(1 2 3) -> '(10 20 30)

3 (define (mult L)

4 (if (null? L)

5 L

6 (cons (* (car L) 10)

7 (mult (cdr L)))))

8

9 ;; Obtine paritatea fiecarui numar (true = par)

10 ;; '(1 2 3) -> '(false true false)

11 (define (parities L)

12 (if (null? L)

13 L

14 (cons (even? (car L))

15 (parities (cdr L)))))

92 / 423

Page 335: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Un nivel mai sus1 ;; Inmulteste cu 10 toate elementele listei L

2 ;; '(1 2 3) -> '(10 20 30)

3 (define (mult L)

4 (if (null? L)

5 L

6 (cons (* (car L) 10)

7 (mult (cdr L)))))

8

9 ;; Obtine paritatea fiecarui numar (true = par)

10 ;; '(1 2 3) -> '(false true false)

11 (define (parities L)

12 (if (null? L)

13 L

14 (cons (even? (car L))

15 (parities (cdr L)))))

92 / 423

Page 336: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Un nivel mai sus1 ;; Inmulteste cu 10 toate elementele listei L

2 ;; '(1 2 3) -> '(10 20 30)

3 (define (mult L)

4 (if (null? L)

5 L

6 (cons (* (car L) 10)

7 (mult (cdr L)))))

8

9 ;; Obtine paritatea fiecarui numar (true = par)

10 ;; '(1 2 3) -> '(false true false)

11 (define (parities L)

12 (if (null? L)

13 L

14 (cons (even? (car L))

15 (parities (cdr L)))))

singura partevariabila,

dependentade (car L)

92 / 423

Page 337: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Un nivel mai sus (cont.)

Cum putem izola transformarea lui (car L)?

Prin funct,ii!

1 ;; map = asociere

2

3 (define (mult-map x )

4 (* x 10))

5

6 (define (parities-map x )

7 (even? x))

93 / 423

Page 338: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Un nivel mai sus (cont.)

Cum putem izola transformarea lui (car L)?Prin funct,ii!

1 ;; map = asociere

2

3 (define (mult-map x )

4 (* x 10))

5

6 (define (parities-map x )

7 (even? x))

93 / 423

Page 339: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Un nivel mai sus (cont.)

Cum putem izola transformarea lui (car L)?Prin funct,ii!

1 ;; map = asociere

2

3 (define (mult-map x )

4 (* x 10))

5

6 (define (parities-map x )

7 (even? x))

rolul lui(car L)

93 / 423

Page 340: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Un nivel mai sus (cont.)1 (define (map f L)

2 (if (null? L)

3 L

4 (cons (f (car L))

5 (map f (cdr L)))))

6

7 (define (mult L)

8 (map mult-map L))

9

10 (define (parities L)

11 (map parities-map L))

Generalizare, de la diversele transformari ale listelor,la conceptul de transformare element cu element,independent de natura acesteia — asociere (mapping)

94 / 423

Page 341: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Un nivel mai sus (cont.)1 (define (map f L)

2 (if (null? L)

3 L

4 (cons (f (car L))

5 (map f (cdr L)))))

6

7 (define (mult L)

8 (map mult-map L))

9

10 (define (parities L)

11 (map parities-map L))

Generalizare, de la diversele transformari ale listelor,la conceptul de transformare element cu element,independent de natura acesteia — asociere (mapping)

transformarealui (car L):parametru

94 / 423

Page 342: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Un nivel mai sus (cont.)1 (define (map f L)

2 (if (null? L)

3 L

4 (cons (f (car L))

5 (map f (cdr L)))))

6

7 (define (mult L)

8 (map mult-map L))

9

10 (define (parities L)

11 (map parities-map L))

Generalizare, de la diversele transformari ale listelor,la conceptul de transformare element cu element,independent de natura acesteia — asociere (mapping)

transformarealui (car L):parametru

94 / 423

Page 343: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Un nivel mai sus (cont.)1 (define (map f L)

2 (if (null? L)

3 L

4 (cons (f (car L))

5 (map f (cdr L)))))

6

7 (define (mult L)

8 (map mult-map L))

9

10 (define (parities L)

11 (map parities-map L))

Generalizare, de la diversele transformari ale listelor,la conceptul de transformare element cu element,independent de natura acesteia — asociere (mapping)

transformarealui (car L):parametru

94 / 423

Page 344: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Motivat,ie

Funct,ii ca valori de prim rang

Funct,ionale

Calculul lambda

95 / 423

Page 345: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii ca valori de prim rang

I În exemplele anterioare: funct,ii vazute ca date!

I Avantaj: sporire considerabila a expresivitat,iilimbajului

I Statutul de valori de prim rang al funct,iilor,acestea putând fi:

I create dinamic (la execut,ie)I numiteI trimise ca parametri unei funct,iiI întoarse dintr-o funct,ie

96 / 423

Page 346: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii ca valori de prim rang

I În exemplele anterioare: funct,ii vazute ca date!

I Avantaj: sporire considerabila a expresivitat,iilimbajului

I Statutul de valori de prim rang al funct,iilor,acestea putând fi:

I create dinamic (la execut,ie)I numiteI trimise ca parametri unei funct,iiI întoarse dintr-o funct,ie

96 / 423

Page 347: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii ca valori de prim rang

I În exemplele anterioare: funct,ii vazute ca date!

I Avantaj: sporire considerabila a expresivitat,iilimbajului

I Statutul de valori de prim rang al funct,iilor,acestea putând fi:

I create dinamic (la execut,ie)I numiteI trimise ca parametri unei funct,iiI întoarse dintr-o funct,ie

96 / 423

Page 348: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluarea funct,iilor

Ca valori, evaluate la ele însele!

1 > +

2 #<procedure:+>

3

4 > (cons + '(1 2))

5 (#<procedure:+> 1 2)

6

7 > (list + - *)

8 (#<procedure:+> #<procedure:-> #<procedure:*>)

97 / 423

Page 349: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluarea funct,iilor

Ca valori, evaluate la ele însele!

1 > +

2 #<procedure:+>

3

4 > (cons + '(1 2))

5 (#<procedure:+> 1 2)

6

7 > (list + - *)

8 (#<procedure:+> #<procedure:-> #<procedure:*>)

97 / 423

Page 350: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluarea funct,iilor

Ca valori, evaluate la ele însele!

1 > +

2 #<procedure:+>

3

4 > (cons + '(1 2))

5 (#<procedure:+> 1 2)

6

7 > (list + - *)

8 (#<procedure:+> #<procedure:-> #<procedure:*>)

97 / 423

Page 351: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluarea funct,iilor

Ca valori, evaluate la ele însele!

1 > +

2 #<procedure:+>

3

4 > (cons + '(1 2))

5 (#<procedure:+> 1 2)

6

7 > (list + - *)

8 (#<procedure:+> #<procedure:-> #<procedure:*>)

97 / 423

Page 352: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluarea funct,iilor

Ca valori, evaluate la ele însele!

1 > +

2 #<procedure:+>

3

4 > (cons + '(1 2))

5 (#<procedure:+> 1 2)

6

7 > (list + - *)

8 (#<procedure:+> #<procedure:-> #<procedure:*>)

97 / 423

Page 353: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluarea funct,iilor

Ca valori, evaluate la ele însele!

1 > +

2 #<procedure:+>

3

4 > (cons + '(1 2))

5 (#<procedure:+> 1 2)

6

7 > (list + - *)

8 (#<procedure:+> #<procedure:-> #<procedure:*>)

97 / 423

Page 354: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluarea funct,iilor

Ca valori, evaluate la ele însele!

1 > +

2 #<procedure:+>

3

4 > (cons + '(1 2))

5 (#<procedure:+> 1 2)

6

7 > (list + - *)

8 (#<procedure:+> #<procedure:-> #<procedure:*>)

97 / 423

Page 355: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii ca parametru

I În exemplele anterioare, funct,ii definite separat,des, i folosite o singura data:

1 (define (mult L)

2 (map mult-map L))

3

4 (define (parities L)

5 (map parities-map L))

I Putem defini funct,iile local unei expresii?

98 / 423

Page 356: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii ca parametru

I În exemplele anterioare, funct,ii definite separat,des, i folosite o singura data:

1 (define (mult L)

2 (map mult-map L))

3

4 (define (parities L)

5 (map parities-map L))

I Putem defini funct,iile local unei expresii?

98 / 423

Page 357: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii anonime

1 (define (mult L)

2 (map ( lambda ( x ) (* x 10) ) L))

3

4 (define (parities L)

5 (map (lambda (x) (even? x)) L))

De fapt,

1 (define (mult-map x)

2 (* x 10))

3

≡1 (define mult-map

2 (lambda (x)

3 (* x 10)))

simpla legare a variabilei mult-map la o funct,ie anonima

99 / 423

Page 358: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii anonime

1 (define (mult L)

2 (map ( lambda ( x ) (* x 10) ) L))

3

4 (define (parities L)

5 (map (lambda (x) (even? x)) L))

constructor

De fapt,

1 (define (mult-map x)

2 (* x 10))

3

≡1 (define mult-map

2 (lambda (x)

3 (* x 10)))

simpla legare a variabilei mult-map la o funct,ie anonima

99 / 423

Page 359: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii anonime

1 (define (mult L)

2 (map ( lambda ( x ) (* x 10) ) L))

3

4 (define (parities L)

5 (map (lambda (x) (even? x)) L))

constructorparametru

De fapt,

1 (define (mult-map x)

2 (* x 10))

3

≡1 (define mult-map

2 (lambda (x)

3 (* x 10)))

simpla legare a variabilei mult-map la o funct,ie anonima

99 / 423

Page 360: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii anonime

1 (define (mult L)

2 (map ( lambda ( x ) (* x 10) ) L))

3

4 (define (parities L)

5 (map (lambda (x) (even? x)) L))

constructorparametru

corp

De fapt,

1 (define (mult-map x)

2 (* x 10))

3

≡1 (define mult-map

2 (lambda (x)

3 (* x 10)))

simpla legare a variabilei mult-map la o funct,ie anonima

99 / 423

Page 361: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii anonime

1 (define (mult L)

2 (map ( lambda ( x ) (* x 10) ) L))

3

4 (define (parities L)

5 (map (lambda (x) (even? x)) L))

constructorparametru

corp

De fapt,

1 (define (mult-map x)

2 (* x 10))

3

≡1 (define mult-map

2 (lambda (x)

3 (* x 10)))

simpla legare a variabilei mult-map la o funct,ie anonima

99 / 423

Page 362: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii anonime

1 (define (mult L)

2 (map ( lambda ( x ) (* x 10) ) L))

3

4 (define (parities L)

5 (map (lambda (x) (even? x)) L))

constructorparametru

corp

De fapt,

1 (define (mult-map x)

2 (* x 10))

3

≡1 (define mult-map

2 (lambda (x)

3 (* x 10)))

simpla legare a variabilei mult-map la o funct,ie anonima

99 / 423

Page 363: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii ca valori de retur

I În exemplul cu funct,ia mult, cum înmult,im toateelementele listei cu un numar oarecare, nu neaparatcu 10?

I Posibila utilizare, pentru înmult,irea cu 5:

1 (map

(

mult-map

-by 5)

'(1 2 3))

I Cum aplicam mult-map-by doar asupra primuluiparametru?

1 (define (mult-map-by q x )

2 (* x q))

3

1 (define (mult-map-by q )

2 (lambda ( x )

3 (* x q)))

100 / 423

Page 364: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii ca valori de retur

I În exemplul cu funct,ia mult, cum înmult,im toateelementele listei cu un numar oarecare, nu neaparatcu 10?

I Posibila utilizare, pentru înmult,irea cu 5:

1 (map

(

mult-map

-by 5)

'(1 2 3))

I Cum aplicam mult-map-by doar asupra primuluiparametru?

1 (define (mult-map-by q x )

2 (* x q))

3

1 (define (mult-map-by q )

2 (lambda ( x )

3 (* x q)))

funct,ie

100 / 423

Page 365: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii ca valori de retur

I În exemplul cu funct,ia mult, cum înmult,im toateelementele listei cu un numar oarecare, nu neaparatcu 10?

I Posibila utilizare, pentru înmult,irea cu 5:

1 (map (mult-map-by 5) '(1 2 3))

I Cum aplicam mult-map-by doar asupra primuluiparametru?

1 (define (mult-map-by q x )

2 (* x q))

3

1 (define (mult-map-by q )

2 (lambda ( x )

3 (* x q)))

funct,ie

100 / 423

Page 366: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii ca valori de retur

I În exemplul cu funct,ia mult, cum înmult,im toateelementele listei cu un numar oarecare, nu neaparatcu 10?

I Posibila utilizare, pentru înmult,irea cu 5:

1 (map (mult-map-by 5) '(1 2 3))

I Cum aplicam mult-map-by doar asupra primuluiparametru?

1 (define (mult-map-by q x )

2 (* x q))

3

1 (define (mult-map-by q )

2 (lambda ( x )

3 (* x q)))

funct,ie

100 / 423

Page 367: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii ca valori de retur

I În exemplul cu funct,ia mult, cum înmult,im toateelementele listei cu un numar oarecare, nu neaparatcu 10?

I Posibila utilizare, pentru înmult,irea cu 5:

1 (map (mult-map-by 5) '(1 2 3))

I Cum aplicam mult-map-by doar asupra primuluiparametru?

1 (define (mult-map-by q x )

2 (* x q))

3

1 (define (mult-map-by q )

2 (lambda ( x )

3 (* x q)))

funct,ie

100 / 423

Page 368: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii ca valori de retur

I În exemplul cu funct,ia mult, cum înmult,im toateelementele listei cu un numar oarecare, nu neaparatcu 10?

I Posibila utilizare, pentru înmult,irea cu 5:

1 (map (mult-map-by 5) '(1 2 3))

I Cum aplicam mult-map-by doar asupra primuluiparametru?

1 (define (mult-map-by q x )

2 (* x q))

3

1 (define (mult-map-by q )

2 (lambda ( x )

3 (* x q)))

funct,ie

simultan(uncurried)

100 / 423

Page 369: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii ca valori de retur

I În exemplul cu funct,ia mult, cum înmult,im toateelementele listei cu un numar oarecare, nu neaparatcu 10?

I Posibila utilizare, pentru înmult,irea cu 5:

1 (map (mult-map-by 5) '(1 2 3))

I Cum aplicam mult-map-by doar asupra primuluiparametru?

1 (define (mult-map-by q x )

2 (* x q))

3

1 (define (mult-map-by q )

2 (lambda ( x )

3 (* x q)))

funct,ie

simultan(uncurried)

pe rând(curried)

100 / 423

Page 370: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii ca valori de retur

I În exemplul cu funct,ia mult, cum înmult,im toateelementele listei cu un numar oarecare, nu neaparatcu 10?

I Posibila utilizare, pentru înmult,irea cu 5:

1 (map (mult-map-by 5) '(1 2 3))

I Cum aplicam mult-map-by doar asupra primuluiparametru?

1 (define (mult-map-by q x )

2 (* x q))

3

1 (define (mult-map-by q )

2 (lambda ( x )

3 (* x q)))

funct,ie

simultan(uncurried)

pe rând(curried)

100 / 423

Page 371: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Secvent,ierea parametrilor

I În loc sa afirmam ca mult-map-by areun parametru s, i ca întoarce o funct,ie,ne “prefacem” ca primes, te doi parametri, pe rând

I Avantaj: reutilizare, prin aplicare part,iala!

I Funct,ie curried: preia parametrii pe rând (aparent)

I Funct,ie uncurried: preia parametrii simultan

101 / 423

Page 372: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Secvent,ierea parametrilor

I În loc sa afirmam ca mult-map-by areun parametru s, i ca întoarce o funct,ie,ne “prefacem” ca primes, te doi parametri, pe rând

I Avantaj: reutilizare, prin aplicare part,iala!

I Funct,ie curried: preia parametrii pe rând (aparent)

I Funct,ie uncurried: preia parametrii simultan

101 / 423

Page 373: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Secvent,ierea parametrilor

I În loc sa afirmam ca mult-map-by areun parametru s, i ca întoarce o funct,ie,ne “prefacem” ca primes, te doi parametri, pe rând

I Avantaj: reutilizare, prin aplicare part,iala!

I Funct,ie curried: preia parametrii pe rând (aparent)

I Funct,ie uncurried: preia parametrii simultan

101 / 423

Page 374: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Secvent,ierea parametrilor

I În loc sa afirmam ca mult-map-by areun parametru s, i ca întoarce o funct,ie,ne “prefacem” ca primes, te doi parametri, pe rând

I Avantaj: reutilizare, prin aplicare part,iala!

I Funct,ie curried: preia parametrii pe rând (aparent)

I Funct,ie uncurried: preia parametrii simultan

101 / 423

Page 375: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Extinderea regulilor de evaluare

I Din moment ce funct,iile sunt valori posibileale expresiilor, necesitatea evaluarii inclusiva operatorului unei aplicat,ii

I Mai departe, evaluarea variabilei + la valoarea ei— funct,ia de adunare!

1 ( (if true + -) (+ 1 2) 3)

2 → ( + (+ 1 2) 3)

3 → ( #<procedure:+> (+ 1 2) 3)

Nota: Pasul de evaluare 2–3 nu transpare la utilizarea stepper-ului din Racket,

dar este prezent pe slide pentru completitudine.

102 / 423

Page 376: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Extinderea regulilor de evaluare

I Din moment ce funct,iile sunt valori posibileale expresiilor, necesitatea evaluarii inclusiva operatorului unei aplicat,ii

I Mai departe, evaluarea variabilei + la valoarea ei— funct,ia de adunare!

1 ( (if true + -) (+ 1 2) 3)

2 → ( + (+ 1 2) 3)

3 → ( #<procedure:+> (+ 1 2) 3)

Nota: Pasul de evaluare 2–3 nu transpare la utilizarea stepper-ului din Racket,

dar este prezent pe slide pentru completitudine.

102 / 423

Page 377: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Extinderea regulilor de evaluare

I Din moment ce funct,iile sunt valori posibileale expresiilor, necesitatea evaluarii inclusiva operatorului unei aplicat,ii

I Mai departe, evaluarea variabilei + la valoarea ei— funct,ia de adunare!

1 ( (if true + -) (+ 1 2) 3)

2 → ( + (+ 1 2) 3)

3 → ( #<procedure:+> (+ 1 2) 3)

Nota: Pasul de evaluare 2–3 nu transpare la utilizarea stepper-ului din Racket,

dar este prezent pe slide pentru completitudine.

102 / 423

Page 378: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Extinderea regulilor de evaluare

I Din moment ce funct,iile sunt valori posibileale expresiilor, necesitatea evaluarii inclusiva operatorului unei aplicat,ii

I Mai departe, evaluarea variabilei + la valoarea ei— funct,ia de adunare!

1 ( (if true + -) (+ 1 2) 3)

2 → ( + (+ 1 2) 3)

3 → ( #<procedure:+> (+ 1 2) 3)

Nota: Pasul de evaluare 2–3 nu transpare la utilizarea stepper-ului din Racket,

dar este prezent pe slide pentru completitudine.

102 / 423

Page 379: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Extinderea regulilor de evaluare

I Din moment ce funct,iile sunt valori posibileale expresiilor, necesitatea evaluarii inclusiva operatorului unei aplicat,ii

I Mai departe, evaluarea variabilei + la valoarea ei— funct,ia de adunare!

1 ( (if true + -) (+ 1 2) 3)

2 → ( + (+ 1 2) 3)

3 → ( #<procedure:+> (+ 1 2) 3)

Nota: Pasul de evaluare 2–3 nu transpare la utilizarea stepper-ului din Racket,

dar este prezent pe slide pentru completitudine.

102 / 423

Page 380: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Extinderea regulilor de evaluare

I Din moment ce funct,iile sunt valori posibileale expresiilor, necesitatea evaluarii inclusiva operatorului unei aplicat,ii

I Mai departe, evaluarea variabilei + la valoarea ei— funct,ia de adunare!

1 ( (if true + -) (+ 1 2) 3)

2 → ( + (+ 1 2) 3)

3 → ( #<procedure:+> (+ 1 2) 3)

Nota: Pasul de evaluare 2–3 nu transpare la utilizarea stepper-ului din Racket,

dar este prezent pe slide pentru completitudine.

102 / 423

Page 381: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aplicat,ie: compunerea a doua funct,ii

1 (define (comp f g)

2 (lambda (x)

3 (f (g x))))

4

5 ((comp car cdr) '(1 2 3)) → 2

103 / 423

Page 382: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Motivat,ie

Funct,ii ca valori de prim rang

Funct,ionale

Calculul lambda

104 / 423

Page 383: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ionale

I Funct,ionala = funct,ie care primes, te ca parametrus, i/ sau întoarce o funct,ie

I Surprind metode generale de prelucrare

I Funct,ionale standard în majoritatea limbajelorfunct,ionale (prezentate în continuare):

I map

I filter

I foldl (fold left)I foldr (fold right)

105 / 423

Page 384: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ionale

I Funct,ionala = funct,ie care primes, te ca parametrus, i/ sau întoarce o funct,ie

I Surprind metode generale de prelucrare

I Funct,ionale standard în majoritatea limbajelorfunct,ionale (prezentate în continuare):

I map

I filter

I foldl (fold left)I foldr (fold right)

105 / 423

Page 385: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ionale

I Funct,ionala = funct,ie care primes, te ca parametrus, i/ sau întoarce o funct,ie

I Surprind metode generale de prelucrare

I Funct,ionale standard în majoritatea limbajelorfunct,ionale (prezentate în continuare):

I map

I filter

I foldl (fold left)I foldr (fold right)

105 / 423

Page 386: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ionale

I Funct,ionala = funct,ie care primes, te ca parametrus, i/ sau întoarce o funct,ie

I Surprind metode generale de prelucrare

I Funct,ionale standard în majoritatea limbajelorfunct,ionale (prezentate în continuare):

I map

I filter

I foldl (fold left)I foldr (fold right)

105 / 423

Page 387: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ionale

I Funct,ionala = funct,ie care primes, te ca parametrus, i/ sau întoarce o funct,ie

I Surprind metode generale de prelucrare

I Funct,ionale standard în majoritatea limbajelorfunct,ionale (prezentate în continuare):

I map

I filter

I foldl (fold left)I foldr (fold right)

105 / 423

Page 388: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ionale

I Funct,ionala = funct,ie care primes, te ca parametrus, i/ sau întoarce o funct,ie

I Surprind metode generale de prelucrare

I Funct,ionale standard în majoritatea limbajelorfunct,ionale (prezentate în continuare):

I map

I filter

I foldl (fold left)

I foldr (fold right)

105 / 423

Page 389: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ionale

I Funct,ionala = funct,ie care primes, te ca parametrus, i/ sau întoarce o funct,ie

I Surprind metode generale de prelucrare

I Funct,ionale standard în majoritatea limbajelorfunct,ionale (prezentate în continuare):

I map

I filter

I foldl (fold left)I foldr (fold right)

105 / 423

Page 390: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ionala map

I Aplicarea unei transformari asupra tuturorelementelor unei liste

I Tratata anterior

1 (map (lambda (x) (* x 10)) '(1 2 3))

2 → '(10 20 30)

106 / 423

Page 391: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ionala filter

I Extragerea dintr-o lista a elementelor care satisfacun predicat logic

I Funct,ia primita ca parametru trebuie sa întoarcao valoare booleana

1 (filter even? '(1 2 3))

2 → '(2)

107 / 423

Page 392: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ionala foldl

I Acumularea tuturor elementelor unei liste sub formaunei singure valori (posibil tot lista, dar nu exclusiv)

I Pacurgere stânga → dreapta

I Utilizarea unei funct,ii binare element-acumulator

I Pornire cu un acumulator init,ial

I Natural recursiva pe . . .

1 (foldl + 0 '(1 2 3))

2 → 6

+

3+

2+

10

108 / 423

Page 393: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ionala foldl

I Acumularea tuturor elementelor unei liste sub formaunei singure valori (posibil tot lista, dar nu exclusiv)

I Pacurgere stânga → dreapta

I Utilizarea unei funct,ii binare element-acumulator

I Pornire cu un acumulator init,ial

I Natural recursiva pe coada

1 (foldl + 0 '(1 2 3))

2 → 6

+

3+

2+

10

108 / 423

Page 394: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ionala foldr

I Similar cu foldl

I Pacurgere dreapta → stânga

I Operare pe structura listei init,iale

I Natural recursiva pe . . .

1 (foldr + 0 '(1 2 3))

2 → 6

cons

cons

cons

’()3

2

1

+

+

+

03

2

1

109 / 423

Page 395: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ionala foldr

I Similar cu foldl

I Pacurgere dreapta → stânga

I Operare pe structura listei init,iale

I Natural recursiva pe stiva

1 (foldr + 0 '(1 2 3))

2 → 6

cons

cons

cons

’()3

2

1

+

+

+

03

2

1

109 / 423

Page 396: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Universalitatea funct,ionalelor fold*

I Orice funct,ie primitiv recursiva pe liste,implementabila în termenii funct,ionalelor fold*

I În particular, utilizabile pentru implementareafunct,ionalelor map s, i filter!

110 / 423

Page 397: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Universalitatea funct,ionalelor fold*

I Orice funct,ie primitiv recursiva pe liste,implementabila în termenii funct,ionalelor fold*

I În particular, utilizabile pentru implementareafunct,ionalelor map s, i filter!

110 / 423

Page 398: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Motivat,ie

Funct,ii ca valori de prim rang

Funct,ionale

Calculul lambda

111 / 423

Page 399: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Trasaturi

I Model de calculabilitate — Alonzo Church, 1932

I Centrat pe conceptul de funct,ie

I Calculul: evaluarea aplicat,iilor de funct,ii,prin substitut,ie textuala

112 / 423

Page 400: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluare

(λ x . x y )

→ y

“Pentru a aplica funct,ia λx .x

asupra parametrului actual,y , se indentifica parametrul formal, x , în corpul funct,iei, x ,

iar aparit,iile primului, x (singura), se substituiecu parametrul actual, obt,inându-se rezultatul

unui pas de evaluare.”

113 / 423

Page 401: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluare

(λ x . x y )

→ y

“Pentru a aplica funct,ia λx .x asupra parametrului actual,y ,

se indentifica parametrul formal, x , în corpul funct,iei, x ,iar aparit,iile primului, x (singura), se substituie

cu parametrul actual, obt,inându-se rezultatulunui pas de evaluare.”

113 / 423

Page 402: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluare

(λ x . x y )

→ y

“Pentru a aplica funct,ia λx .x asupra parametrului actual,y , se indentifica parametrul formal, x ,

în corpul funct,iei, x ,iar aparit,iile primului, x (singura), se substituie

cu parametrul actual, obt,inându-se rezultatulunui pas de evaluare.”

113 / 423

Page 403: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluare

(λ x . x y )

→ y

“Pentru a aplica funct,ia λx .x asupra parametrului actual,y , se indentifica parametrul formal, x , în corpul funct,iei, x ,

iar aparit,iile primului, x (singura), se substituiecu parametrul actual, obt,inându-se rezultatul

unui pas de evaluare.”

113 / 423

Page 404: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluare

(λ x . x y )

→ y

x

“Pentru a aplica funct,ia λx .x asupra parametrului actual,y , se indentifica parametrul formal, x , în corpul funct,iei, x ,

iar aparit,iile primului, x (singura),

se substituiecu parametrul actual, obt,inându-se rezultatul

unui pas de evaluare.”

113 / 423

Page 405: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluare

(λ x . x y )

→ y

x

“Pentru a aplica funct,ia λx .x asupra parametrului actual,y , se indentifica parametrul formal, x , în corpul funct,iei, x ,

iar aparit,iile primului, x (singura), se substituiecu parametrul actual,

obt,inându-se rezultatulunui pas de evaluare.”

113 / 423

Page 406: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluare

(λ x . x y )→ yx

“Pentru a aplica funct,ia λx .x asupra parametrului actual,y , se indentifica parametrul formal, x , în corpul funct,iei, x ,

iar aparit,iile primului, x (singura), se substituiecu parametrul actual, obt,inându-se rezultatul

unui pas de evaluare.”

113 / 423

Page 407: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formalizarea substitut,iei

În expresia (λx .λ x .y y ):

I Aplicarea mecanica a principiul substitut,iei: λy .y

I Intuitiv: λx .y

I Rezultat eronat al abordarii mecanice!

I Ce ar trebui substituit de fapt?

114 / 423

Page 408: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formalizarea substitut,iei

În expresia (λx .λ x .y y ):

I Aplicarea mecanica a principiul substitut,iei: λy .y

I Intuitiv: λx .y

I Rezultat eronat al abordarii mecanice!

I Ce ar trebui substituit de fapt?

114 / 423

Page 409: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formalizarea substitut,iei

În expresia (λx .λ x .y y ):

I Aplicarea mecanica a principiul substitut,iei: λy .y

I Intuitiv: λx .y

I Rezultat eronat al abordarii mecanice!

I Ce ar trebui substituit de fapt?

114 / 423

Page 410: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formalizarea substitut,iei

În expresia (λx .λ x .y y ):

I Aplicarea mecanica a principiul substitut,iei: λy .y

I Intuitiv: λx .y

I Rezultat eronat al abordarii mecanice!

I Ce ar trebui substituit de fapt?

114 / 423

Page 411: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formalizarea substitut,iei

În expresia (λx .λ x .y y ):

I Aplicarea mecanica a principiul substitut,iei: λy .y

I Intuitiv: λx .y

I Rezultat eronat al abordarii mecanice!

I Ce ar trebui substituit de fapt?

114 / 423

Page 412: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aparit,ii libere s, i legate ale variabilelor

(λ x .(

x

λ x . x ) x )

I Aparit,ie legata a lui x :

I Dupa λ

I În corpul unei funct,ii de parametru x

I Dependent,a statutului unei aparit,ii de expresia la carene raportam!

115 / 423

Page 413: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aparit,ii libere s, i legate ale variabilelor

(λ x .(

x

λ x . x ) x )

I Aparit,ie legata a lui x :

I Dupa λ

I În corpul unei funct,ii de parametru x

I Dependent,a statutului unei aparit,ii de expresia la carene raportam!

libera

115 / 423

Page 414: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aparit,ii libere s, i legate ale variabilelor

(λ x .

( x

λ x .

x )

x )

I Aparit,ie legata a lui x :

I Dupa λ

I În corpul unei funct,ii de parametru x

I Dependent,a statutului unei aparit,ii de expresia la carene raportam!

libera

115 / 423

Page 415: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aparit,ii libere s, i legate ale variabilelor

(

λ x .( x

λ x .

x )

x )

I Aparit,ie legata a lui x :

I Dupa λ

I În corpul unei funct,ii de parametru x

I Dependent,a statutului unei aparit,ii de expresia la carene raportam!

legata

115 / 423

Page 416: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aparit,ii libere s, i legate ale variabilelor

(

λ x .( x λ x . x )

x )

I Aparit,ie legata a lui x :

I Dupa λ

I În corpul unei funct,ii de parametru x

I Dependent,a statutului unei aparit,ii de expresia la carene raportam!

legata

115 / 423

Page 417: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aparit,ii libere s, i legate ale variabilelor

(λ x .( x λ x . x ) x )

I Aparit,ie legata a lui x :

I Dupa λ

I În corpul unei funct,ii de parametru x

I Dependent,a statutului unei aparit,ii de expresia la carene raportam!

legata libera

115 / 423

Page 418: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aparit,ii libere s, i legate ale variabilelor

(λ x .( x λ x . x ) x )

I Aparit,ie legata a lui x :

I Dupa λ

I În corpul unei funct,ii de parametru x

I Dependent,a statutului unei aparit,ii de expresia la carene raportam!

legata libera

115 / 423

Page 419: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aparit,ii libere s, i legate ale variabilelor

(λ x .( x λ x . x ) x )

I Aparit,ie legata a lui x :I Dupa λ

I În corpul unei funct,ii de parametru x

I Dependent,a statutului unei aparit,ii de expresia la carene raportam!

legata libera

115 / 423

Page 420: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aparit,ii libere s, i legate ale variabilelor

(λ x .( x λ x . x ) x )

I Aparit,ie legata a lui x :I Dupa λ

I În corpul unei funct,ii de parametru x

I Dependent,a statutului unei aparit,ii de expresia la carene raportam!

legata libera

115 / 423

Page 421: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aparit,ii libere s, i legate ale variabilelor

(λ x .( x λ x . x ) x )

I Aparit,ie legata a lui x :I Dupa λ

I În corpul unei funct,ii de parametru x

I Dependent,a statutului unei aparit,ii de expresia la carene raportam!

legata libera

115 / 423

Page 422: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formalizarea substitut,iei (cont.)

I Substituirea tuturor aparit,iilor parametrului formal,care sunt libere în raport cu corpul!

I În exemplul anterior, (λx .λx .y y):

I Absent,a aparit,iilor libere ale lui x în corpul λx .yI Producerea corecta a corpului nemodificat ca rezultat

I În expresia (λx .λcons.x cons):

I Aparit,ia din dreapta a lui cons este libera,cu semnificat,ia din Racket

I Aplicarea mecanica: λcons.consI Rezultat eronat, din cauza modificarii statutului,

din aparit,ie libera în legata

116 / 423

Page 423: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formalizarea substitut,iei (cont.)

I Substituirea tuturor aparit,iilor parametrului formal,care sunt libere în raport cu corpul!

I În exemplul anterior, (λx .λx .y y):

I Absent,a aparit,iilor libere ale lui x în corpul λx .yI Producerea corecta a corpului nemodificat ca rezultat

I În expresia (λx .λcons.x cons):

I Aparit,ia din dreapta a lui cons este libera,cu semnificat,ia din Racket

I Aplicarea mecanica: λcons.consI Rezultat eronat, din cauza modificarii statutului,

din aparit,ie libera în legata

116 / 423

Page 424: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formalizarea substitut,iei (cont.)

I Substituirea tuturor aparit,iilor parametrului formal,care sunt libere în raport cu corpul!

I În exemplul anterior, (λx .λx .y y):I Absent,a aparit,iilor libere ale lui x în corpul λx .y

I Producerea corecta a corpului nemodificat ca rezultat

I În expresia (λx .λcons.x cons):

I Aparit,ia din dreapta a lui cons este libera,cu semnificat,ia din Racket

I Aplicarea mecanica: λcons.consI Rezultat eronat, din cauza modificarii statutului,

din aparit,ie libera în legata

116 / 423

Page 425: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formalizarea substitut,iei (cont.)

I Substituirea tuturor aparit,iilor parametrului formal,care sunt libere în raport cu corpul!

I În exemplul anterior, (λx .λx .y y):I Absent,a aparit,iilor libere ale lui x în corpul λx .yI Producerea corecta a corpului nemodificat ca rezultat

I În expresia (λx .λcons.x cons):

I Aparit,ia din dreapta a lui cons este libera,cu semnificat,ia din Racket

I Aplicarea mecanica: λcons.consI Rezultat eronat, din cauza modificarii statutului,

din aparit,ie libera în legata

116 / 423

Page 426: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formalizarea substitut,iei (cont.)

I Substituirea tuturor aparit,iilor parametrului formal,care sunt libere în raport cu corpul!

I În exemplul anterior, (λx .λx .y y):I Absent,a aparit,iilor libere ale lui x în corpul λx .yI Producerea corecta a corpului nemodificat ca rezultat

I În expresia (λx .λcons.x cons):

I Aparit,ia din dreapta a lui cons este libera,cu semnificat,ia din Racket

I Aplicarea mecanica: λcons.consI Rezultat eronat, din cauza modificarii statutului,

din aparit,ie libera în legata

116 / 423

Page 427: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formalizarea substitut,iei (cont.)

I Substituirea tuturor aparit,iilor parametrului formal,care sunt libere în raport cu corpul!

I În exemplul anterior, (λx .λx .y y):I Absent,a aparit,iilor libere ale lui x în corpul λx .yI Producerea corecta a corpului nemodificat ca rezultat

I În expresia (λx .λcons.x cons):I Aparit,ia din dreapta a lui cons este libera,

cu semnificat,ia din Racket

I Aplicarea mecanica: λcons.consI Rezultat eronat, din cauza modificarii statutului,

din aparit,ie libera în legata

116 / 423

Page 428: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formalizarea substitut,iei (cont.)

I Substituirea tuturor aparit,iilor parametrului formal,care sunt libere în raport cu corpul!

I În exemplul anterior, (λx .λx .y y):I Absent,a aparit,iilor libere ale lui x în corpul λx .yI Producerea corecta a corpului nemodificat ca rezultat

I În expresia (λx .λcons.x cons):I Aparit,ia din dreapta a lui cons este libera,

cu semnificat,ia din RacketI Aplicarea mecanica: λcons.cons

I Rezultat eronat, din cauza modificarii statutului,din aparit,ie libera în legata

116 / 423

Page 429: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formalizarea substitut,iei (cont.)

I Substituirea tuturor aparit,iilor parametrului formal,care sunt libere în raport cu corpul!

I În exemplul anterior, (λx .λx .y y):I Absent,a aparit,iilor libere ale lui x în corpul λx .yI Producerea corecta a corpului nemodificat ca rezultat

I În expresia (λx .λcons.x cons):I Aparit,ia din dreapta a lui cons este libera,

cu semnificat,ia din RacketI Aplicarea mecanica: λcons.consI Rezultat eronat, din cauza modificarii statutului,

din aparit,ie libera în legata

116 / 423

Page 430: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Redenumirea variabilelor legate

(λx .λcons.x cons)

Aparit,iile legate din corp,în conflict cu cele libere din parametrul actual,

redenumite!

117 / 423

Page 431: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Redenumirea variabilelor legate

(λx .λcons.x cons)

Aparit,iile legate din corp,

în conflict cu cele libere din parametrul actual,redenumite!

117 / 423

Page 432: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Redenumirea variabilelor legate

(λx .λcons.x cons)

Aparit,iile legate din corp,în conflict cu cele libere din parametrul actual,

redenumite!

117 / 423

Page 433: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Redenumirea variabilelor legate

(λx .λz

ons

.x cons)

Aparit,iile legate din corp,în conflict cu cele libere din parametrul actual,

redenumite!

117 / 423

Page 434: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formalizarea substitut,iei — concluzie

I Substituirea tuturor aparit,iilor parametrului formal,care sunt libere în raport cu corpul, ulterioaraeventualelor redenumiri ale aparit,iilor legatedin corpul funct,iei, care coincid cu aparit,iile liberedin parametrul actual

I În exemplul anterior, (λx .λz.x cons)→ λz.cons

I Rezultat corect, cu pastrarea statutului de aparit,ielibera

118 / 423

Page 435: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formalizarea substitut,iei — concluzie

I Substituirea tuturor aparit,iilor parametrului formal,care sunt libere în raport cu corpul, ulterioaraeventualelor redenumiri ale aparit,iilor legatedin corpul funct,iei, care coincid cu aparit,iile liberedin parametrul actual

I În exemplul anterior, (λx .λz.x cons)→ λz.cons

I Rezultat corect, cu pastrarea statutului de aparit,ielibera

118 / 423

Page 436: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formalizarea substitut,iei — concluzie

I Substituirea tuturor aparit,iilor parametrului formal,care sunt libere în raport cu corpul, ulterioaraeventualelor redenumiri ale aparit,iilor legatedin corpul funct,iei, care coincid cu aparit,iile liberedin parametrul actual

I În exemplul anterior, (λx .λz.x cons)→ λz.cons

I Rezultat corect, cu pastrarea statutului de aparit,ielibera

118 / 423

Page 437: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Universalitatea funct,iilor

I Posibilitatea reprezentarii tuturor valorilor uzualeexclusiv prin funct,ii (v. slide-ul 50)

I Mai devreme, funct,ii ca date (parametri, valoride retur etc.)

I Acum, date ca funct,ii!!

I V. sursele atas, te slide-urilor

119 / 423

Page 438: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezumat

I Abstractizare funct,ionala

I Funct,ii ca valori — sporirea expresivitat,ii limbajului

I Funct,ionale — metode generale de prelucrare

I Calculul lambda s, i universalitatea funct,iilor

120 / 423

Page 439: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Partea V

Legarea variabilelor.Evaluare contextuala

121 / 423

Page 440: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Legarea variabilelor

Contexte, închideri, evaluare contextuala

122 / 423

Page 441: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Legarea variabilelor

Contexte, închideri, evaluare contextuala

123 / 423

Page 442: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

VariabileProprietat,i

I Tip: asociate valorilor, nu variabilelor

I Identificator

I Valoarea legata (la un anumit moment)

I Domeniul de vizibilitate

I Durata de viat,a

124 / 423

Page 443: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

VariabileProprietat,i

I Tip: asociate valorilor, nu variabilelor

I Identificator

I Valoarea legata (la un anumit moment)

I Domeniul de vizibilitate

I Durata de viat,a

124 / 423

Page 444: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

VariabileProprietat,i

I Tip: asociate valorilor, nu variabilelor

I Identificator

I Valoarea legata (la un anumit moment)

I Domeniul de vizibilitate

I Durata de viat,a

124 / 423

Page 445: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

VariabileProprietat,i

I Tip: asociate valorilor, nu variabilelor

I Identificator

I Valoarea legata (la un anumit moment)

I Domeniul de vizibilitate

I Durata de viat,a

124 / 423

Page 446: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

VariabileProprietat,i

I Tip: asociate valorilor, nu variabilelor

I Identificator

I Valoarea legata (la un anumit moment)

I Domeniul de vizibilitate

I Durata de viat,a

124 / 423

Page 447: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

VariabileStari

I Declarata: cunoas, tem identificatorul

I Definita: cunoas, tem s, i valoarea

125 / 423

Page 448: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

VariabileStari

I Declarata: cunoas, tem identificatorul

I Definita: cunoas, tem s, i valoarea

125 / 423

Page 449: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legarea variabilelor

I Modul de asociere a aparit,iei unei variabilecu definit,ia acesteia

I Domeniu de vizibilitate (scope) = mult,imea punctelordin program unde o definit,ie este vizibila, pe bazamodului de legare

I Statica (lexicala) / dinamica

126 / 423

Page 450: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legarea variabilelor

I Modul de asociere a aparit,iei unei variabilecu definit,ia acesteia

I Domeniu de vizibilitate (scope) = mult,imea punctelordin program unde o definit,ie este vizibila, pe bazamodului de legare

I Statica (lexicala) / dinamica

126 / 423

Page 451: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legarea variabilelor

I Modul de asociere a aparit,iei unei variabilecu definit,ia acesteia

I Domeniu de vizibilitate (scope) = mult,imea punctelordin program unde o definit,ie este vizibila, pe bazamodului de legare

I Statica (lexicala) / dinamica

126 / 423

Page 452: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Problema

1 def x = 0

2 f() { return x }

3 def x = 1

4 g() { def x = 2 ; return f() }

I Atent,ie! Variabilele x sunt diferite, nu se reatribuieacelas, i x (aceasta este semnificat,ia lui def)

I În câte moduri poate decurge evaluarea aplicat,ieig(), în raport cu variabilele definite?

127 / 423

Page 453: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Problema

1 def x = 0

2 f() { return x }

3 def x = 1

4 g() { def x = 2 ; return f() }

I Atent,ie! Variabilele x sunt diferite, nu se reatribuieacelas, i x (aceasta este semnificat,ia lui def)

I În câte moduri poate decurge evaluarea aplicat,ieig(), în raport cu variabilele definite?

127 / 423

Page 454: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Problema

1 def x = 0

2 f() { return x }

3 def x = 1

4 g() { def x = 2 ; return f() }

I Atent,ie! Variabilele x sunt diferite, nu se reatribuieacelas, i x (aceasta este semnificat,ia lui def)

I În câte moduri poate decurge evaluarea aplicat,ieig(), în raport cu variabilele definite?

127 / 423

Page 455: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare statica (lexicala)

I Extragerea variabilelor din contextul definirii expresiei

I Domeniu de vizibilitate determinat prin construct,iilelimbajului (lexical), la compilare (static)

1 def x = 0

2 f() { return x }

3 def x = 1

4 g() { def x = 2 ; return f() }

g() → 0

128 / 423

Page 456: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare statica (lexicala)

I Extragerea variabilelor din contextul definirii expresiei

I Domeniu de vizibilitate determinat prin construct,iilelimbajului (lexical), la compilare (static)

1 def x = 0

2 f() { return x }

3 def x = 1

4 g() { def x = 2 ; return f() }

g() → 0

128 / 423

Page 457: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare statica (lexicala)

I Extragerea variabilelor din contextul definirii expresiei

I Domeniu de vizibilitate determinat prin construct,iilelimbajului (lexical), la compilare (static)

1 def x = 0

2 f() { return x }

3 def x = 1

4 g() { def x = 2 ; return f() }

g() → 0

128 / 423

Page 458: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare statica (lexicala)

I Extragerea variabilelor din contextul definirii expresiei

I Domeniu de vizibilitate determinat prin construct,iilelimbajului (lexical), la compilare (static)

1 def x = 0

2 f() { return x }

3 def x = 1

4 g() { def x = 2 ; return f() }

g() → 0

128 / 423

Page 459: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare statica (lexicala)

I Extragerea variabilelor din contextul definirii expresiei

I Domeniu de vizibilitate determinat prin construct,iilelimbajului (lexical), la compilare (static)

1 def x = 0

2 f() { return x }

3 def x = 1

4 g() { def x = 2 ; return f() }

g() → 0

128 / 423

Page 460: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare statica (lexicala)

I Extragerea variabilelor din contextul definirii expresiei

I Domeniu de vizibilitate determinat prin construct,iilelimbajului (lexical), la compilare (static)

1 def x = 0

2 f() { return x }

3 def x = 1

4 g() { def x = 2 ; return f() }

g() → 0

128 / 423

Page 461: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare statica (lexicala)

I Extragerea variabilelor din contextul definirii expresiei

I Domeniu de vizibilitate determinat prin construct,iilelimbajului (lexical), la compilare (static)

1 def x = 0

2 f() { return x }

3 def x = 1

4 g() { def x = 2 ; return f() }

g() → 0

128 / 423

Page 462: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare statica (lexicala)

I Extragerea variabilelor din contextul definirii expresiei

I Domeniu de vizibilitate determinat prin construct,iilelimbajului (lexical), la compilare (static)

1 def x = 0

2 f() { return x }

3 def x = 1

4 g() { def x = 2 ; return f() }

g() → 0

128 / 423

Page 463: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare statica (lexicala)

I Extragerea variabilelor din contextul definirii expresiei

I Domeniu de vizibilitate determinat prin construct,iilelimbajului (lexical), la compilare (static)

1 def x = 0

2 f() { return x }

3 def x = 1

4 g() { def x = 2 ; return f() }

g() →

0

128 / 423

Page 464: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare statica (lexicala)

I Extragerea variabilelor din contextul definirii expresiei

I Domeniu de vizibilitate determinat prin construct,iilelimbajului (lexical), la compilare (static)

1 def x = 0

2 f() { return x }

3 def x = 1

4 g() { def x = 2 ; return f() }

g() → 0

128 / 423

Page 465: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare statica în calculul lambda

Care sunt domeniile de vizibilitate ale parametrilorformali, în expresia de mai jos?

λ x . λ y . (λ x . x y )

129 / 423

Page 466: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare statica în calculul lambda

Care sunt domeniile de vizibilitate ale parametrilorformali, în expresia de mai jos?

λ x . λ y . (λ x . x y )

129 / 423

Page 467: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare statica în calculul lambda

Care sunt domeniile de vizibilitate ale parametrilorformali, în expresia de mai jos?

λ x . λ y . (λ x . x y )

129 / 423

Page 468: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare statica în calculul lambda

Care sunt domeniile de vizibilitate ale parametrilorformali, în expresia de mai jos?

λ x . λ y . (λ x . x y )

129 / 423

Page 469: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare statica în calculul lambda

Care sunt domeniile de vizibilitate ale parametrilorformali, în expresia de mai jos?

λ x . λ y . (λ x . x y )

129 / 423

Page 470: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare statica în calculul lambda

Care sunt domeniile de vizibilitate ale parametrilorformali, în expresia de mai jos?

λ x . λ y . (λ x . x y )

129 / 423

Page 471: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare statica în calculul lambda

Care sunt domeniile de vizibilitate ale parametrilorformali, în expresia de mai jos?

λ x . λ y . (λ x . x y )

129 / 423

Page 472: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare dinamica

I Extragerea variabilelor din contextul evaluarii expr.

I Domeniu de vizibilitate determinat la execut,ie

1 def x = 0

2 f() { return x }

/ f() -> 0

3 def x = 1

/ f() -> 1

4 g() { def x = 2 ; return f() }

/ f() -> 2 <- g()

5 ...

/ f() -> 1

Atent,ie! x-ul portocaliu, vizibil:I spat,ial: în întregul programI temporal: doar pe durata evaluarii corpului lui g()

130 / 423

Page 473: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare dinamica

I Extragerea variabilelor din contextul evaluarii expr.I Domeniu de vizibilitate determinat la execut,ie

1 def x = 0

2 f() { return x }

/ f() -> 0

3 def x = 1

/ f() -> 1

4 g() { def x = 2 ; return f() }

/ f() -> 2 <- g()

5 ...

/ f() -> 1

Atent,ie! x-ul portocaliu, vizibil:I spat,ial: în întregul programI temporal: doar pe durata evaluarii corpului lui g()

130 / 423

Page 474: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare dinamica

I Extragerea variabilelor din contextul evaluarii expr.I Domeniu de vizibilitate determinat la execut,ie

1 def x = 0

2 f() { return x } / f() -> 0

3 def x = 1

/ f() -> 1

4 g() { def x = 2 ; return f() }

/ f() -> 2 <- g()

5 ...

/ f() -> 1

Atent,ie! x-ul portocaliu, vizibil:I spat,ial: în întregul programI temporal: doar pe durata evaluarii corpului lui g()

130 / 423

Page 475: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare dinamica

I Extragerea variabilelor din contextul evaluarii expr.I Domeniu de vizibilitate determinat la execut,ie

1 def x = 0

2 f() { return x }

/

f() -> 0

3 def x = 1 / f() -> 1

4 g() { def x = 2 ; return f() }

/ f() -> 2 <- g()

5 ...

/ f() -> 1

Atent,ie! x-ul portocaliu, vizibil:I spat,ial: în întregul programI temporal: doar pe durata evaluarii corpului lui g()

130 / 423

Page 476: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare dinamica

I Extragerea variabilelor din contextul evaluarii expr.I Domeniu de vizibilitate determinat la execut,ie

1 def x = 0

2 f() { return x }

/

f() -> 0

3 def x = 1

/

f() -> 1

4 g() { def x = 2 ; return f() } / f() -> 2 <- g()

5 ...

/ f() -> 1

Atent,ie! x-ul portocaliu, vizibil:I spat,ial: în întregul programI temporal: doar pe durata evaluarii corpului lui g()

130 / 423

Page 477: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare dinamica

I Extragerea variabilelor din contextul evaluarii expr.I Domeniu de vizibilitate determinat la execut,ie

1 def x = 0

2 f() { return x }

/

f() -> 0

3 def x = 1

/

f() -> 1

4 g() { def x = 2 ; return f() }

/

f() -> 2 <- g()

5 ... / f() -> 1

Atent,ie! x-ul portocaliu, vizibil:I spat,ial: în întregul programI temporal: doar pe durata evaluarii corpului lui g()

130 / 423

Page 478: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare dinamica

I Extragerea variabilelor din contextul evaluarii expr.I Domeniu de vizibilitate determinat la execut,ie

1 def x = 0

2 f() { return x }

/

f() -> 0

3 def x = 1

/

f() -> 1

4 g() { def x = 2 ; return f() }

/

f() -> 2 <- g()

5 ...

/

f() -> 1

Atent,ie! x-ul portocaliu, vizibil:

I spat,ial: în întregul programI temporal: doar pe durata evaluarii corpului lui g()

130 / 423

Page 479: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare dinamica

I Extragerea variabilelor din contextul evaluarii expr.I Domeniu de vizibilitate determinat la execut,ie

1 def x = 0

2 f() { return x }

/

f() -> 0

3 def x = 1

/

f() -> 1

4 g() { def x = 2 ; return f() }

/

f() -> 2 <- g()

5 ...

/

f() -> 1

Atent,ie! x-ul portocaliu, vizibil:I spat,ial: în întregul program

I temporal: doar pe durata evaluarii corpului lui g()

130 / 423

Page 480: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare dinamica

I Extragerea variabilelor din contextul evaluarii expr.I Domeniu de vizibilitate determinat la execut,ie

1 def x = 0

2 f() { return x }

/

f() -> 0

3 def x = 1

/

f() -> 1

4 g() { def x = 2 ; return f() }

/

f() -> 2 <- g()

5 ...

/

f() -> 1

Atent,ie! x-ul portocaliu, vizibil:I spat,ial: în întregul programI temporal: doar pe durata evaluarii corpului lui g()

130 / 423

Page 481: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare mixta

I Variabile locale, staticI Variabile globale, dinamic

1 def x = 0

2 f() { return x }

/ f() -> 0

3 def x = 1

/ f() -> 1

4 g() { def x = 2 ; return f() }

/ f() -> 1 <- g()

5 ...

/ f() -> 1

Atent,ie! x-ul portocaliu, invizibil în corpul lui f!

131 / 423

Page 482: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare mixta

I Variabile locale, staticI Variabile globale, dinamic

1 def x = 0

2 f() { return x } / f() -> 0

3 def x = 1

/ f() -> 1

4 g() { def x = 2 ; return f() }

/ f() -> 1 <- g()

5 ...

/ f() -> 1

Atent,ie! x-ul portocaliu, invizibil în corpul lui f!

131 / 423

Page 483: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare mixta

I Variabile locale, staticI Variabile globale, dinamic

1 def x = 0

2 f() { return x }

/

f() -> 0

3 def x = 1 / f() -> 1

4 g() { def x = 2 ; return f() }

/ f() -> 1 <- g()

5 ...

/ f() -> 1

Atent,ie! x-ul portocaliu, invizibil în corpul lui f!

131 / 423

Page 484: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare mixta

I Variabile locale, staticI Variabile globale, dinamic

1 def x = 0

2 f() { return x }

/

f() -> 0

3 def x = 1

/

f() -> 1

4 g() { def x = 2 ; return f() } / f() -> 1 <- g()

5 ...

/ f() -> 1

Atent,ie! x-ul portocaliu, invizibil în corpul lui f!

131 / 423

Page 485: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare mixta

I Variabile locale, staticI Variabile globale, dinamic

1 def x = 0

2 f() { return x }

/

f() -> 0

3 def x = 1

/

f() -> 1

4 g() { def x = 2 ; return f() }

/

f() -> 1 <- g()

5 ... / f() -> 1

Atent,ie! x-ul portocaliu, invizibil în corpul lui f!

131 / 423

Page 486: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legare mixta

I Variabile locale, staticI Variabile globale, dinamic

1 def x = 0

2 f() { return x }

/

f() -> 0

3 def x = 1

/

f() -> 1

4 g() { def x = 2 ; return f() }

/

f() -> 1 <- g()

5 ...

/

f() -> 1

Atent,ie! x-ul portocaliu, invizibil în corpul lui f!

131 / 423

Page 487: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legarea variabilelor în Racket

I Variabile declarate sau definite în expresii: static:I lambda

I let

I let*

I letrec

I Variabile top-level: dinamic:I define

132 / 423

Page 488: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Legarea variabilelor în Racket

I Variabile declarate sau definite în expresii: static:I lambda

I let

I let*

I letrec

I Variabile top-level: dinamic:I define

132 / 423

Page 489: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia lambdaDefinit,ie

I Leaga static parametrii formali ai unei funct,ii

I Sintaxa:

1 (lambda (p1 ... pk ... pn)

2 expr )

I Domeniul de vizibilitate a parametrului pk = mult,imeapunctelor din corpul funct,iei, expr, în care aparit,iilelui pk sunt libere (v. slide-ul 128)

133 / 423

Page 490: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia lambdaDefinit,ie

I Leaga static parametrii formali ai unei funct,ii

I Sintaxa:

1 (lambda (p1 ... pk ... pn)

2 expr )

I Domeniul de vizibilitate a parametrului pk = mult,imeapunctelor din corpul funct,iei, expr, în care aparit,iilelui pk sunt libere (v. slide-ul 128)

133 / 423

Page 491: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia lambdaDefinit,ie

I Leaga static parametrii formali ai unei funct,ii

I Sintaxa:

1 (lambda (p1 ... pk ... pn)

2 expr )

I Domeniul de vizibilitate a parametrului pk = mult,imeapunctelor din corpul funct,iei, expr, în care aparit,iilelui pk sunt libere (v. slide-ul 128)

133 / 423

Page 492: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia lambdaExemplu

1 (lambda ( x )

2 (x (lambda (y) y)) )

134 / 423

Page 493: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia lambdaExemplu

1 (lambda ( x )

2 (x (lambda (y) y)) )

134 / 423

Page 494: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia lambdaSemantica

I Aplicat,ie:

1 ((lambda (p1 ... pn)

2 expr) a1 ... an)

I Se evalueaza operanzii ak, în ordine aleatoare(evaluare aplicativa)

I Se evalueaza corpul funct,iei, expr, t,inând cont delegarile pk ← valoare(ak)

I Valoarea aplicat,iei este valoarea lui expr

135 / 423

Page 495: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia lambdaSemantica

I Aplicat,ie:

1 ((lambda (p1 ... pn)

2 expr) a1 ... an)

I Se evalueaza operanzii ak, în ordine aleatoare(evaluare aplicativa)

I Se evalueaza corpul funct,iei, expr, t,inând cont delegarile pk ← valoare(ak)

I Valoarea aplicat,iei este valoarea lui expr

135 / 423

Page 496: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia lambdaSemantica

I Aplicat,ie:

1 ((lambda (p1 ... pn)

2 expr) a1 ... an)

I Se evalueaza operanzii ak, în ordine aleatoare(evaluare aplicativa)

I Se evalueaza corpul funct,iei, expr, t,inând cont delegarile pk ← valoare(ak)

I Valoarea aplicat,iei este valoarea lui expr

135 / 423

Page 497: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia lambdaSemantica

I Aplicat,ie:

1 ((lambda (p1 ... pn)

2 expr) a1 ... an)

I Se evalueaza operanzii ak, în ordine aleatoare(evaluare aplicativa)

I Se evalueaza corpul funct,iei, expr, t,inând cont delegarile pk ← valoare(ak)

I Valoarea aplicat,iei este valoarea lui expr

135 / 423

Page 498: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia letDefinit,ie

I Leaga static variabile locale

I Sintaxa:

1 (let ([v1 e1] ... [ vk ek] ... [vn en])

2 expr )

I Domeniul de vizibilitate a variabilei vk = mult,imeapunctelor din corp, expr, în care aparit,iile lui vk suntlibere (v. slide-ul 128)

136 / 423

Page 499: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia letDefinit,ie

I Leaga static variabile locale

I Sintaxa:

1 (let ([v1 e1] ... [ vk ek] ... [vn en])

2 expr )

I Domeniul de vizibilitate a variabilei vk = mult,imeapunctelor din corp, expr, în care aparit,iile lui vk suntlibere (v. slide-ul 128)

136 / 423

Page 500: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia letDefinit,ie

I Leaga static variabile locale

I Sintaxa:

1 (let ([v1 e1] ... [ vk ek] ... [vn en])

2 expr )

I Domeniul de vizibilitate a variabilei vk = mult,imeapunctelor din corp, expr, în care aparit,iile lui vk suntlibere (v. slide-ul 128)

136 / 423

Page 501: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia letExemplu

1 (let ([ x 1] [y 2])

2 (+ x 2) )

137 / 423

Page 502: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia letExemplu

1 (let ([ x 1] [y 2])

2 (+ x 2) )

137 / 423

Page 503: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia letSemantica

1 (let ([v1 e1] ... [vn en])

2 expr)

echivalent cu

1 ((lambda (v1 ... vn)

2 expr) e1 ... en)

138 / 423

Page 504: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia letSemantica

1 (let ([v1 e1] ... [vn en])

2 expr)

echivalent cu

1 ((lambda (v1 ... vn)

2 expr) e1 ... en)

138 / 423

Page 505: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia let*Definit,ie

I Leaga static variabile locale

I Sintaxa:

1 (let* ([v1 e1] ... [ vk ek] ... [vn en] )

2 expr )

I Domeniul de vizibilitate a variabilei vk = mult,imeapunctelor din

I restul legarilor s, iI corp, expr,

în care aparit,iile lui vk sunt libere (v. slide-ul 128)

139 / 423

Page 506: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia let*Definit,ie

I Leaga static variabile locale

I Sintaxa:

1 (let* ([v1 e1] ... [ vk ek] ... [vn en] )

2 expr )

I Domeniul de vizibilitate a variabilei vk = mult,imeapunctelor din

I restul legarilor s, iI corp, expr,

în care aparit,iile lui vk sunt libere (v. slide-ul 128)

139 / 423

Page 507: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia let*Definit,ie

I Leaga static variabile locale

I Sintaxa:

1 (let* ([v1 e1] ... [ vk ek] ... [vn en] )

2 expr )

I Domeniul de vizibilitate a variabilei vk = mult,imeapunctelor din

I restul legarilor s, iI corp, expr,

în care aparit,iile lui vk sunt libere (v. slide-ul 128)

139 / 423

Page 508: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia let*Definit,ie

I Leaga static variabile locale

I Sintaxa:

1 (let* ([v1 e1] ... [ vk ek] ... [vn en] )

2 expr )

I Domeniul de vizibilitate a variabilei vk = mult,imeapunctelor din

I restul legarilor s, i

I corp, expr,

în care aparit,iile lui vk sunt libere (v. slide-ul 128)

139 / 423

Page 509: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia let*Definit,ie

I Leaga static variabile locale

I Sintaxa:

1 (let* ([v1 e1] ... [ vk ek] ... [vn en] )

2 expr )

I Domeniul de vizibilitate a variabilei vk = mult,imeapunctelor din

I restul legarilor s, iI corp, expr,

în care aparit,iile lui vk sunt libere (v. slide-ul 128)

139 / 423

Page 510: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia let*Exemplu

1 (let* ([ x 1] [y x] )

2 (+ x 2) )

140 / 423

Page 511: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia let*Exemplu

1 (let* ([ x 1] [y x] )

2 (+ x 2) )

140 / 423

Page 512: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia let*Semantica

1 (let* ([v1 e1] ... [vn en])

2 expr)

echivalent cu

1 (let ([v1 e1])

2 ...

3 (let ([vn en])

4 expr)...)

Evaluarea expresiilor se face în ordine!

141 / 423

Page 513: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia let*Semantica

1 (let* ([v1 e1] ... [vn en])

2 expr)

echivalent cu

1 (let ([v1 e1])

2 ...

3 (let ([vn en])

4 expr)...)

Evaluarea expresiilor se face în ordine!

141 / 423

Page 514: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia letrecDefinit,ie

I Leaga static variabile locale

I Sintaxa:

1 (letrec ( [v1 e1] ... [ vk ek] ... [vn en] )

2 expr )

I Domeniul de vizibilitate a variabilei vk = mult,imeapunctelor din întreaga construct,ie, în care aparit,iilelui vk sunt libere (v. slide-ul 128)

142 / 423

Page 515: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia letrecDefinit,ie

I Leaga static variabile locale

I Sintaxa:

1 (letrec ( [v1 e1] ... [ vk ek] ... [vn en] )

2 expr )

I Domeniul de vizibilitate a variabilei vk = mult,imeapunctelor din întreaga construct,ie, în care aparit,iilelui vk sunt libere (v. slide-ul 128)

142 / 423

Page 516: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia letrecDefinit,ie

I Leaga static variabile locale

I Sintaxa:

1 (letrec ( [v1 e1] ... [ vk ek] ... [vn en] )

2 expr )

I Domeniul de vizibilitate a variabilei vk = mult,imeapunctelor din întreaga construct,ie, în care aparit,iilelui vk sunt libere (v. slide-ul 128)

142 / 423

Page 517: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia letrecExemplu

1 (letrec ([ factorial

2 (lambda (n)

3 (if (zero? n) 1

4 (* n (factorial (- n 1)))))])

5 (factorial 5))

143 / 423

Page 518: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia letrecExemplu

1 (letrec ([ factorial

2 (lambda (n)

3 (if (zero? n) 1

4 (* n (factorial (- n 1)))))])

5 (factorial 5))

143 / 423

Page 519: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineDefinit,ie

I Leaga dinamic variabile top-level (de obicei)

I Sintaxa:

1 (define v expr)

I Domeniul de vizibilitate a variabilei v =întregul program, presupunând ca:

I legarea a fost facuta, în timpul execut,ieiI nicio o alta legare, statica sau dinamica, a lui v,

nu a fost facuta ulterior

144 / 423

Page 520: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineDefinit,ie

I Leaga dinamic variabile top-level (de obicei)

I Sintaxa:

1 (define v expr)

I Domeniul de vizibilitate a variabilei v =întregul program, presupunând ca:

I legarea a fost facuta, în timpul execut,ieiI nicio o alta legare, statica sau dinamica, a lui v,

nu a fost facuta ulterior

144 / 423

Page 521: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineDefinit,ie

I Leaga dinamic variabile top-level (de obicei)

I Sintaxa:

1 (define v expr)

I Domeniul de vizibilitate a variabilei v =întregul program, presupunând ca:

I legarea a fost facuta, în timpul execut,ieiI nicio o alta legare, statica sau dinamica, a lui v,

nu a fost facuta ulterior

144 / 423

Page 522: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineDefinit,ie

I Leaga dinamic variabile top-level (de obicei)

I Sintaxa:

1 (define v expr)

I Domeniul de vizibilitate a variabilei v =întregul program, presupunând ca:

I legarea a fost facuta, în timpul execut,iei

I nicio o alta legare, statica sau dinamica, a lui v,nu a fost facuta ulterior

144 / 423

Page 523: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineDefinit,ie

I Leaga dinamic variabile top-level (de obicei)

I Sintaxa:

1 (define v expr)

I Domeniul de vizibilitate a variabilei v =întregul program, presupunând ca:

I legarea a fost facuta, în timpul execut,ieiI nicio o alta legare, statica sau dinamica, a lui v,

nu a fost facuta ulterior

144 / 423

Page 524: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineExemple

1 (define x 0)

2 (define f (lambda () x))

3 (f) ; 0

4 (define x 1)

5 (f) ; 1

145 / 423

Page 525: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineExemple

1

2 (define f (lambda () x))

3

4 (define x 1)

5 (f) ; 1

145 / 423

Page 526: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineExemple

1 (define factorial

2 (lambda (n)

3 (if (zero? n) 1

4 (* n (factorial (- n 1))))))

5

6 (factorial 5)

; 120

7

8 (define g factorial)

9 (define factorial (lambda (x) x))

10

11 (g 5)

; 20

146 / 423

Page 527: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineExemple

1 (define factorial

2 (lambda (n)

3 (if (zero? n) 1

4 (* n (factorial (- n 1))))))

5

6 (factorial 5) ; 120

7

8 (define g factorial)

9 (define factorial (lambda (x) x))

10

11 (g 5)

; 20

146 / 423

Page 528: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineExemple

1 (define factorial

2 (lambda (n)

3 (if (zero? n) 1

4 (* n (factorial (- n 1))))))

5

6 (factorial 5) ; 120

7

8 (define g factorial)

9 (define factorial (lambda (x) x))

10

11 (g 5) ; 20

146 / 423

Page 529: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineSemantica

I Se evalueaza expresia, expr

I Valoarea lui v este valoarea lui expr

I Avantaje:

I definirea variabilelor top-level în orice ordineI definirea funct,iilor mutual recursive

I Dezavantaj: efect de atribuire

147 / 423

Page 530: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineSemantica

I Se evalueaza expresia, expr

I Valoarea lui v este valoarea lui expr

I Avantaje:

I definirea variabilelor top-level în orice ordineI definirea funct,iilor mutual recursive

I Dezavantaj: efect de atribuire

147 / 423

Page 531: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineSemantica

I Se evalueaza expresia, expr

I Valoarea lui v este valoarea lui expr

I Avantaje:

I definirea variabilelor top-level în orice ordineI definirea funct,iilor mutual recursive

I Dezavantaj: efect de atribuire

147 / 423

Page 532: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineSemantica

I Se evalueaza expresia, expr

I Valoarea lui v este valoarea lui expr

I Avantaje:I definirea variabilelor top-level în orice ordine

I definirea funct,iilor mutual recursive

I Dezavantaj: efect de atribuire

147 / 423

Page 533: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineSemantica

I Se evalueaza expresia, expr

I Valoarea lui v este valoarea lui expr

I Avantaje:I definirea variabilelor top-level în orice ordineI definirea funct,iilor mutual recursive

I Dezavantaj: efect de atribuire

147 / 423

Page 534: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Construct,ia defineSemantica

I Se evalueaza expresia, expr

I Valoarea lui v este valoarea lui expr

I Avantaje:I definirea variabilelor top-level în orice ordineI definirea funct,iilor mutual recursive

I Dezavantaj: efect de atribuire

147 / 423

Page 535: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemplu mixt

Codificarea secvent,ei de pe slide-ul 131

1 (define x 0)

2 (define f (lambda () x))

3 (define x 1)

4

5 (define g

6 (lambda (x)

7 (f)))

8

9 (g 2)

; 1

148 / 423

Page 536: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemplu mixt

Codificarea secvent,ei de pe slide-ul 131

1 (define x 0)

2 (define f (lambda () x))

3 (define x 1)

4

5 (define g

6 (lambda (x)

7 (f)))

8

9 (g 2) ; 1

148 / 423

Page 537: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aplicat,ie pentru legarea variabilelor79 (define (app A B)

80 (if (null? A)

81 B

82 (cons (car A) (app (cdr A) B))))

Problema: B este trimis nemodificat fiecarei aplicat,iirecursive. Rescriem:

87 (define (app2 A B )

88 (letrec ([internal

89 (lambda (L)

90 (if (null? L) B

91 (cons (car L)

92 (internal (cdr L)))))])

93 (internal A)))

149 / 423

Page 538: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aplicat,ie pentru legarea variabilelor79 (define (app A B)

80 (if (null? A)

81 B

82 (cons (car A) (app (cdr A) B))))

Problema: B este trimis nemodificat fiecarei aplicat,iirecursive. Rescriem:

87 (define (app2 A B )

88 (letrec ([internal

89 (lambda (L)

90 (if (null? L) B

91 (cons (car L)

92 (internal (cdr L)))))])

93 (internal A)))

149 / 423

Page 539: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aplicat,ie pentru legarea variabilelor79 (define (app A B)

80 (if (null? A)

81 B

82 (cons (car A) (app (cdr A) B))))

Problema: B este trimis nemodificat fiecarei aplicat,iirecursive. Rescriem:

87 (define (app2 A B )

88 (letrec ([internal

89 (lambda (L)

90 (if (null? L) B

91 (cons (car L)

92 (internal (cdr L)))))])

93 (internal A)))

149 / 423

Page 540: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Legarea variabilelor

Contexte, închideri, evaluare contextuala

150 / 423

Page 541: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Modelul de evaluare bazat pe substitut,ie

I Ineficient

I Tratament special pentru coliziunile dintre variabilelelibere ale parametrului actual s, i cele legateale corpului funct,iei aplicate

I Imposibil de aplicat, în prezent,a unor eventualereatribuiri ale variabilelor

151 / 423

Page 542: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Modelul de evaluare bazat pe substitut,ie

I Ineficient

I Tratament special pentru coliziunile dintre variabilelelibere ale parametrului actual s, i cele legateale corpului funct,iei aplicate

I Imposibil de aplicat, în prezent,a unor eventualereatribuiri ale variabilelor

151 / 423

Page 543: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Modelul de evaluare bazat pe substitut,ie

I Ineficient

I Tratament special pentru coliziunile dintre variabilelelibere ale parametrului actual s, i cele legateale corpului funct,iei aplicate

I Imposibil de aplicat, în prezent,a unor eventualereatribuiri ale variabilelor

151 / 423

Page 544: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Alternativa la substitut,ia textuala

(λx .x y)→ y

→ 〈x ; {x ← y}〉

·

I Asocierea unei expresii cu un dict,ionar de variabilelibere: context de evaluare

expresie context

I Cautarea unei variabile utilizate în procesulde evaluare, în contextul asociat

I Perechea: închidere, i.e. forma pseudoînchisaa expresiei, obt,inuta prin legarea variabilelor libere

închidere

152 / 423

Page 545: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Alternativa la substitut,ia textuala

(λx .x y) 6→ y→ 〈x ; {x ← y}〉

·

I Asocierea unei expresii cu un dict,ionar de variabilelibere: context de evaluare

expresie context

I Cautarea unei variabile utilizate în procesulde evaluare, în contextul asociat

I Perechea: închidere, i.e. forma pseudoînchisaa expresiei, obt,inuta prin legarea variabilelor libere

închidere

152 / 423

Page 546: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Alternativa la substitut,ia textuala

(λx .x y) 6→ y→ 〈x ; {x ← y}〉

·

I Asocierea unei expresii cu un dict,ionar de variabilelibere: context de evaluare

expresie context

I Cautarea unei variabile utilizate în procesulde evaluare, în contextul asociat

I Perechea: închidere, i.e. forma pseudoînchisaa expresiei, obt,inuta prin legarea variabilelor libere

închidere

152 / 423

Page 547: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Alternativa la substitut,ia textuala

(λx .x y) 6→ y→ 〈x ; {x ← y}〉

·

I Asocierea unei expresii cu un dict,ionar de variabilelibere: context de evaluare

expresie context

I Cautarea unei variabile utilizate în procesulde evaluare, în contextul asociat

I Perechea: închidere, i.e. forma pseudoînchisaa expresiei, obt,inuta prin legarea variabilelor libere

închidere

152 / 423

Page 548: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Context computat,ional

I Mult,ime de variabile, alaturi de valorile acestora

I Dependent de punctul din program s, i de momentulde timp

I Legare statica — mult,imea variabilelor care cont,inpunctul conform structurii lexicale a programului1 (let ([ x 1])

2 (+ x (let ([ y 2])

3 (* x y) )))

I Legare dinamica — mult,imea variabilelor definitecel mai recent

153 / 423

Page 549: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Context computat,ional

I Mult,ime de variabile, alaturi de valorile acestora

I Dependent de punctul din program s, i de momentulde timp

I Legare statica — mult,imea variabilelor care cont,inpunctul conform structurii lexicale a programului1 (let ([ x 1])

2 (+ x (let ([ y 2])

3 (* x y) )))

I Legare dinamica — mult,imea variabilelor definitecel mai recent

153 / 423

Page 550: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Context computat,ional

I Mult,ime de variabile, alaturi de valorile acestora

I Dependent de punctul din program s, i de momentulde timp

I Legare statica — mult,imea variabilelor care cont,inpunctul conform structurii lexicale a programului1 (let ([ x 1])

2 (+ x (let ([ y 2])

3 (* x y) )))

I Legare dinamica — mult,imea variabilelor definitecel mai recent

153 / 423

Page 551: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Context computat,ional

I Mult,ime de variabile, alaturi de valorile acestora

I Dependent de punctul din program s, i de momentulde timp

I Legare statica — mult,imea variabilelor care cont,inpunctul conform structurii lexicale a programului1 (let ([ x 1])

2 (+ x (let ([ y 2])

3 (* x y) )))

I Legare dinamica — mult,imea variabilelor definitecel mai recent

153 / 423

Page 552: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Context computat,ional

I Mult,ime de variabile, alaturi de valorile acestora

I Dependent de punctul din program s, i de momentulde timp

I Legare statica — mult,imea variabilelor care cont,inpunctul conform structurii lexicale a programului1 (let ([ x 1])

2 (+ x (let ([ y 2])

3 (* x y) )))

I Legare dinamica — mult,imea variabilelor definitecel mai recent

153 / 423

Page 553: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Context computat,ional

I Mult,ime de variabile, alaturi de valorile acestora

I Dependent de punctul din program s, i de momentulde timp

I Legare statica — mult,imea variabilelor care cont,inpunctul conform structurii lexicale a programului1 (let ([ x 1])

2 (+ x (let ([ y 2])

3 (* x y) )))

I Legare dinamica — mult,imea variabilelor definitecel mai recent

153 / 423

Page 554: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Context computat,ional

I Mult,ime de variabile, alaturi de valorile acestora

I Dependent de punctul din program s, i de momentulde timp

I Legare statica — mult,imea variabilelor care cont,inpunctul conform structurii lexicale a programului1 (let ([ x 1])

2 (+ x (let ([ y 2])

3 (* x y) )))

I Legare dinamica — mult,imea variabilelor definitecel mai recent

153 / 423

Page 555: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Context computat,ional

I Mult,ime de variabile, alaturi de valorile acestora

I Dependent de punctul din program s, i de momentulde timp

I Legare statica — mult,imea variabilelor care cont,inpunctul conform structurii lexicale a programului1 (let ([ x 1])

2 (+ x (let ([ y 2])

3 (* x y) )))

I Legare dinamica — mult,imea variabilelor definitecel mai recent

{x ← 1}

153 / 423

Page 556: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Context computat,ional

I Mult,ime de variabile, alaturi de valorile acestora

I Dependent de punctul din program s, i de momentulde timp

I Legare statica — mult,imea variabilelor care cont,inpunctul conform structurii lexicale a programului1 (let ([ x 1])

2 (+ x (let ([ y 2])

3 (* x y) )))

I Legare dinamica — mult,imea variabilelor definitecel mai recent

{x ← 1}

{x ← 1,y ← 2}

153 / 423

Page 557: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Context computat,ional

I Mult,ime de variabile, alaturi de valorile acestora

I Dependent de punctul din program s, i de momentulde timp

I Legare statica — mult,imea variabilelor care cont,inpunctul conform structurii lexicale a programului1 (let ([ x 1])

2 (+ x (let ([ y 2])

3 (* x y) )))

I Legare dinamica — mult,imea variabilelor definitecel mai recent

{x ← 1}

{x ← 1,y ← 2}

153 / 423

Page 558: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ÎnchideriDefinit,ie

I Închidere: pereche expresie-context

I Semnificat,ia unei închideri:

〈e; C〉

este valoarea expresiei e, în contextul C

I Închidere funct,ionala:

〈λx .e; C〉

este o funct,ie care îs, i salveaza contextul,pe care îl utilizeaza, în momentul aplicarii,pentru evaluarea corpului

I Utilizate pentru legare statica!

154 / 423

Page 559: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ÎnchideriDefinit,ie

I Închidere: pereche expresie-context

I Semnificat,ia unei închideri:

〈e; C〉

este valoarea expresiei e, în contextul C

I Închidere funct,ionala:

〈λx .e; C〉

este o funct,ie care îs, i salveaza contextul,pe care îl utilizeaza, în momentul aplicarii,pentru evaluarea corpului

I Utilizate pentru legare statica!

154 / 423

Page 560: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ÎnchideriDefinit,ie

I Închidere: pereche expresie-context

I Semnificat,ia unei închideri:

〈e; C〉

este valoarea expresiei e, în contextul C

I Închidere funct,ionala:

〈λx .e; C〉

este o funct,ie care îs, i salveaza contextul,pe care îl utilizeaza, în momentul aplicarii,pentru evaluarea corpului

I Utilizate pentru legare statica!

154 / 423

Page 561: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ÎnchideriDefinit,ie

I Închidere: pereche expresie-context

I Semnificat,ia unei închideri:

〈e; C〉

este valoarea expresiei e, în contextul C

I Închidere funct,ionala:

〈λx .e; C〉

este o funct,ie care îs, i salveaza contextul,pe care îl utilizeaza, în momentul aplicarii,pentru evaluarea corpului

I Utilizate pentru legare statica!154 / 423

Page 562: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ÎnchideriConstruct,ie

1. Construct,ie prin evaluarea unei expresii lambda,într-un context dat

2. Legarea variabilelor top-level, în contextul global,prin define

1 (define y 0)

2 (define sum (lambda (x) (+ x y)))

y ← 0sum← 〈λx .(+ x y); 〉

Contextul global

Pointer catre contextul global

155 / 423

Page 563: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ÎnchideriConstruct,ie

1. Construct,ie prin evaluarea unei expresii lambda,într-un context dat

2. Legarea variabilelor top-level, în contextul global,prin define

1 (define y 0)

2 (define sum (lambda (x) (+ x y)))

y ← 0sum←

〈λx .(+ x y); 〉 Contextul global

Pointer catre contextul global

155 / 423

Page 564: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ÎnchideriConstruct,ie

1. Construct,ie prin evaluarea unei expresii lambda,într-un context dat

2. Legarea variabilelor top-level, în contextul global,prin define

1 (define y 0)

2 (define sum (lambda (x) (+ x y)))

y ← 0sum← 〈λx .(+ x y); 〉 Contextul global

Pointer catre contextul global

155 / 423

Page 565: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ÎnchideriAplicare

1. Legarea parametrilor formali, într-un nou context,la valorile parametrilor actuali

2. Mos, tenirea contextului din închidere de catre cel nou

3. Evaluarea corpului închiderii în noul context

1 (sum (+ 1 2))

y ← 0sum← 〈λx .(+ x y); 〉 Contextul globalG

x ← 3

Contextul în care se evalueaza corpul (+ x y)

C

Mos, tenire

156 / 423

Page 566: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ÎnchideriAplicare

1. Legarea parametrilor formali, într-un nou context,la valorile parametrilor actuali

2. Mos, tenirea contextului din închidere de catre cel nou

3. Evaluarea corpului închiderii în noul context

1 (sum (+ 1 2))

y ← 0sum← 〈λx .(+ x y); 〉 Contextul globalG

x ← 3

Contextul în care se evalueaza corpul (+ x y)

C

Mos, tenire

156 / 423

Page 567: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ÎnchideriAplicare

1. Legarea parametrilor formali, într-un nou context,la valorile parametrilor actuali

2. Mos, tenirea contextului din închidere de catre cel nou

3. Evaluarea corpului închiderii în noul context

1 (sum (+ 1 2))

y ← 0sum← 〈λx .(+ x y); 〉 Contextul globalG

x ← 3

Contextul în care se evalueaza corpul (+ x y)

C

Mos, tenire

156 / 423

Page 568: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ÎnchideriAplicare

1. Legarea parametrilor formali, într-un nou context,la valorile parametrilor actuali

2. Mos, tenirea contextului din închidere de catre cel nou

3. Evaluarea corpului închiderii în noul context

1 (sum (+ 1 2))

y ← 0sum← 〈λx .(+ x y); 〉 Contextul globalG

x ← 3Contextul în care se evalueaza corpul (+ x y)

C

Mos, tenire

156 / 423

Page 569: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Ierarhia de contexte

I Arbore având contextul global drept radacina

I În cazul absent,ei unei variabile din contextul curent,cautarea acesteia în contextul parinte s, .a.m.d.

I Pe slide-ul 156:

I x : identificat în CI y : absent din C, dar identificat în G, parintele lui C

157 / 423

Page 570: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Ierarhia de contexte

I Arbore având contextul global drept radacina

I În cazul absent,ei unei variabile din contextul curent,cautarea acesteia în contextul parinte s, .a.m.d.

I Pe slide-ul 156:

I x : identificat în CI y : absent din C, dar identificat în G, parintele lui C

157 / 423

Page 571: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Ierarhia de contexte

I Arbore având contextul global drept radacina

I În cazul absent,ei unei variabile din contextul curent,cautarea acesteia în contextul parinte s, .a.m.d.

I Pe slide-ul 156:

I x : identificat în CI y : absent din C, dar identificat în G, parintele lui C

157 / 423

Page 572: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Ierarhia de contexte

I Arbore având contextul global drept radacina

I În cazul absent,ei unei variabile din contextul curent,cautarea acesteia în contextul parinte s, .a.m.d.

I Pe slide-ul 156:I x : identificat în C

I y : absent din C, dar identificat în G, parintele lui C

157 / 423

Page 573: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Ierarhia de contexte

I Arbore având contextul global drept radacina

I În cazul absent,ei unei variabile din contextul curent,cautarea acesteia în contextul parinte s, .a.m.d.

I Pe slide-ul 156:I x : identificat în CI y : absent din C, dar identificat în G, parintele lui C

157 / 423

Page 574: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Închideri funct,ionaleExemplu

1 (define comp

2 (lambda (f)

3 (lambda (g)

4 (lambda (x)

5 (f (g x))))))

6

7 (define inc (lambda (x) (+ x 1)))

8 (define comp-inc (comp inc))

9

10 (define double (lambda (x) (* x 2)))

11 (define comp-inc-double (comp-inc double))

12

13 (comp-inc-double 5) ; 11

14

15 (define inc (lambda (x) x))

16 (comp-inc-double 5) ; tot 11!

158 / 423

Page 575: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Închideri funct,ionaleExplicat,ia exemplului

comp← 〈λ fgx .(f (g x)); 〉inc← 〈λx .(+ x 1); 〉comp-inc← 〈λgx .(f (g x)); 〉double← 〈λx .(∗ x 2); 〉comp-inc-double← 〈λx .(f (g x)); 〉

f ←inc︷ ︸︸ ︷

〈λx .(+ x 1); 〉

g← 〈λx .(∗ x 2); 〉︸ ︷︷ ︸double

159 / 423

Page 576: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Închideri funct,ionaleExplicat,ia exemplului

comp← 〈λ fgx .(f (g x)); 〉

inc← 〈λx .(+ x 1); 〉comp-inc← 〈λgx .(f (g x)); 〉double← 〈λx .(∗ x 2); 〉comp-inc-double← 〈λx .(f (g x)); 〉

f ←inc︷ ︸︸ ︷

〈λx .(+ x 1); 〉

g← 〈λx .(∗ x 2); 〉︸ ︷︷ ︸double

159 / 423

Page 577: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Închideri funct,ionaleExplicat,ia exemplului

comp← 〈λ fgx .(f (g x)); 〉inc← 〈λx .(+ x 1); 〉

comp-inc← 〈λgx .(f (g x)); 〉double← 〈λx .(∗ x 2); 〉comp-inc-double← 〈λx .(f (g x)); 〉

f ←inc︷ ︸︸ ︷

〈λx .(+ x 1); 〉

g← 〈λx .(∗ x 2); 〉︸ ︷︷ ︸double

159 / 423

Page 578: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Închideri funct,ionaleExplicat,ia exemplului

comp← 〈λ fgx .(f (g x)); 〉inc← 〈λx .(+ x 1); 〉comp-inc← 〈λgx .(f (g x)); 〉

double← 〈λx .(∗ x 2); 〉comp-inc-double← 〈λx .(f (g x)); 〉

f ←inc︷ ︸︸ ︷

〈λx .(+ x 1); 〉

g← 〈λx .(∗ x 2); 〉︸ ︷︷ ︸double

159 / 423

Page 579: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Închideri funct,ionaleExplicat,ia exemplului

comp← 〈λ fgx .(f (g x)); 〉inc← 〈λx .(+ x 1); 〉comp-inc← 〈λgx .(f (g x)); 〉

double← 〈λx .(∗ x 2); 〉comp-inc-double← 〈λx .(f (g x)); 〉

f ←inc︷ ︸︸ ︷

〈λx .(+ x 1); 〉

g← 〈λx .(∗ x 2); 〉︸ ︷︷ ︸double

159 / 423

Page 580: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Închideri funct,ionaleExplicat,ia exemplului

comp← 〈λ fgx .(f (g x)); 〉inc← 〈λx .(+ x 1); 〉comp-inc← 〈λgx .(f (g x)); 〉

double← 〈λx .(∗ x 2); 〉comp-inc-double← 〈λx .(f (g x)); 〉

f ←inc︷ ︸︸ ︷

〈λx .(+ x 1); 〉

g← 〈λx .(∗ x 2); 〉︸ ︷︷ ︸double

159 / 423

Page 581: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Închideri funct,ionaleExplicat,ia exemplului

comp← 〈λ fgx .(f (g x)); 〉inc← 〈λx .(+ x 1); 〉comp-inc← 〈λgx .(f (g x)); 〉

double← 〈λx .(∗ x 2); 〉comp-inc-double← 〈λx .(f (g x)); 〉

f ←inc︷ ︸︸ ︷

〈λx .(+ x 1); 〉

g← 〈λx .(∗ x 2); 〉︸ ︷︷ ︸double

159 / 423

Page 582: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Închideri funct,ionaleExplicat,ia exemplului

comp← 〈λ fgx .(f (g x)); 〉inc← 〈λx .(+ x 1); 〉comp-inc← 〈λgx .(f (g x)); 〉double← 〈λx .(∗ x 2); 〉

comp-inc-double← 〈λx .(f (g x)); 〉

f ←inc︷ ︸︸ ︷

〈λx .(+ x 1); 〉

g← 〈λx .(∗ x 2); 〉︸ ︷︷ ︸double

159 / 423

Page 583: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Închideri funct,ionaleExplicat,ia exemplului

comp← 〈λ fgx .(f (g x)); 〉inc← 〈λx .(+ x 1); 〉comp-inc← 〈λgx .(f (g x)); 〉double← 〈λx .(∗ x 2); 〉comp-inc-double← 〈λx .(f (g x)); 〉

f ←inc︷ ︸︸ ︷

〈λx .(+ x 1); 〉

g← 〈λx .(∗ x 2); 〉︸ ︷︷ ︸double

159 / 423

Page 584: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Închideri funct,ionaleExplicat,ia exemplului

comp← 〈λ fgx .(f (g x)); 〉inc← 〈λx .(+ x 1); 〉comp-inc← 〈λgx .(f (g x)); 〉double← 〈λx .(∗ x 2); 〉comp-inc-double← 〈λx .(f (g x)); 〉

f ←inc︷ ︸︸ ︷

〈λx .(+ x 1); 〉

g← 〈λx .(∗ x 2); 〉︸ ︷︷ ︸double

159 / 423

Page 585: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Închideri funct,ionaleExplicat,ia exemplului

comp← 〈λ fgx .(f (g x)); 〉inc← 〈λx .(+ x 1); 〉comp-inc← 〈λgx .(f (g x)); 〉double← 〈λx .(∗ x 2); 〉comp-inc-double← 〈λx .(f (g x)); 〉

f ←inc︷ ︸︸ ︷

〈λx .(+ x 1); 〉

g← 〈λx .(∗ x 2); 〉︸ ︷︷ ︸double

159 / 423

Page 586: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Închideri funct,ionaleExplicat,ia exemplului

comp← 〈λ fgx .(f (g x)); 〉inc← 〈λx .(+ x 1); 〉comp-inc← 〈λgx .(f (g x)); 〉double← 〈λx .(∗ x 2); 〉comp-inc-double← 〈λx .(f (g x)); 〉

f ←inc︷ ︸︸ ︷

〈λx .(+ x 1); 〉

g← 〈λx .(∗ x 2); 〉︸ ︷︷ ︸double

159 / 423

Page 587: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezumat

I Legare statica/ dinamica a variabilelor

I Contexte de evaluare, închideri, evaluare contextuala

160 / 423

Page 588: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Partea VI

Întârzierea evaluarii

161 / 423

Page 589: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Mecanisme

Abstractizare de date

Fluxuri

Rezolvarea problemelor prin cautare lenes, aîn spat,iul starilor

162 / 423

Page 590: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Mecanisme

Abstractizare de date

Fluxuri

Rezolvarea problemelor prin cautare lenes, aîn spat,iul starilor

163 / 423

Page 591: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Motivat,ie

I Sa se implementeze funct,ia prod :I prod(false,y) = 0I prod(true,y) = y(y + 1)

I Se presupune ca evaluarea lui y este costistisitoare,s, i ca ar trebui efectuata doar daca este necesar.

164 / 423

Page 592: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Motivat,ie

I Sa se implementeze funct,ia prod :I prod(false,y) = 0I prod(true,y) = y(y + 1)

I Se presupune ca evaluarea lui y este costistisitoare,s, i ca ar trebui efectuata doar daca este necesar.

164 / 423

Page 593: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Varianta 1Implementare directa

1 (define (prod x y)

2 (if x (* y (+ y 1)) 0))

3

4 (define (test x)

5 (let ([y 5])

6 (prod x (begin (display "y") y))))

7

8 (test #f) ; y 0

9 (test #t) ; y 30

Implementare eronata, deoarece ambii parametrisunt evaluat,i în momentul aplicarii!

165 / 423

Page 594: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Varianta 1Implementare directa

1 (define (prod x y)

2 (if x (* y (+ y 1)) 0))

3

4 (define (test x)

5 (let ([y 5])

6 (prod x (begin (display "y") y))))

7

8 (test #f) ; y 0

9 (test #t) ; y 30

Implementare eronata, deoarece ambii parametrisunt evaluat,i în momentul aplicarii!

165 / 423

Page 595: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Varianta 2quote & eval

1 (define (prod x y)

2 (if x (* ( eval y) (+ ( eval y) 1)) 0))

3

4 (define (test x)

5 (let ([y 5])

6 (prod x ’ (begin (display "y") y))))

7

8 (test #f) ; 0

9 (test #t) ; y y: undefined

I x = #f — comportament corect, y neevaluatI x = #t — eroare, quote nu salveaza contextul

166 / 423

Page 596: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Varianta 2quote & eval

1 (define (prod x y)

2 (if x (* ( eval y) (+ ( eval y) 1)) 0))

3

4 (define (test x)

5 (let ([y 5])

6 (prod x ’ (begin (display "y") y))))

7

8 (test #f) ; 0

9 (test #t) ; y y: undefined

I x = #f — comportament corect, y neevaluat

I x = #t — eroare, quote nu salveaza contextul

166 / 423

Page 597: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Varianta 2quote & eval

1 (define (prod x y)

2 (if x (* ( eval y) (+ ( eval y) 1)) 0))

3

4 (define (test x)

5 (let ([y 5])

6 (prod x ’ (begin (display "y") y))))

7

8 (test #f) ; 0

9 (test #t) ; y y: undefined

I x = #f — comportament corect, y neevaluatI x = #t — eroare, quote nu salveaza contextul

166 / 423

Page 598: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Varianta 3Închideri funct,ionale

1 (define (prod x y)

2 (if x (* (y) (+ (y) 1)) 0))

3

4 (define (test x)

5 (let ([y 5])

6 (prod x ( lambda ()

7 (begin (display "y") y)))))

8

9 (test #f) ; 0

10 (test #t) ; yy 30

I Comportament corect: y evaluat la cerereI x = #t — y evaluat de 2 ori, ineficient

167 / 423

Page 599: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Varianta 3Închideri funct,ionale

1 (define (prod x y)

2 (if x (* (y) (+ (y) 1)) 0))

3

4 (define (test x)

5 (let ([y 5])

6 (prod x ( lambda ()

7 (begin (display "y") y)))))

8

9 (test #f) ; 0

10 (test #t) ; yy 30

I Comportament corect: y evaluat la cerere

I x = #t — y evaluat de 2 ori, ineficient

167 / 423

Page 600: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Varianta 3Închideri funct,ionale

1 (define (prod x y)

2 (if x (* (y) (+ (y) 1)) 0))

3

4 (define (test x)

5 (let ([y 5])

6 (prod x ( lambda ()

7 (begin (display "y") y)))))

8

9 (test #f) ; 0

10 (test #t) ; yy 30

I Comportament corect: y evaluat la cerereI x = #t — y evaluat de 2 ori, ineficient

167 / 423

Page 601: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Varianta 4Promisiuni: delay & force

1 (define (prod x y)

2 (if x (* ( force y) (+ ( force y) 1)) 0))

3

4 (define (test x)

5 (let ([y 5])

6 (prod x ( delay (begin (display "y") y)))))

7

8 (test #f) ; 0

9 (test #t) ; y 30

Comportament corect: y evaluat la cerere, o singura data— evaluare lenes, a

168 / 423

Page 602: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Varianta 4Promisiuni: delay & force

1 (define (prod x y)

2 (if x (* ( force y) (+ ( force y) 1)) 0))

3

4 (define (test x)

5 (let ([y 5])

6 (prod x ( delay (begin (display "y") y)))))

7

8 (test #f) ; 0

9 (test #t) ; y 30

Comportament corect: y evaluat la cerere, o singura data

— evaluare lenes, a

168 / 423

Page 603: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Varianta 4Promisiuni: delay & force

1 (define (prod x y)

2 (if x (* ( force y) (+ ( force y) 1)) 0))

3

4 (define (test x)

5 (let ([y 5])

6 (prod x ( delay (begin (display "y") y)))))

7

8 (test #f) ; 0

9 (test #t) ; y 30

Comportament corect: y evaluat la cerere, o singura data— evaluare lenes, a

168 / 423

Page 604: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

PromisiuniDescriere

I Rezultatul înca neevaluat al unei expresii

I Exemplu: (delay (* 5 6))

I Valori de prim rang în limbaj (v. slide-ul 96)

I delay

I construies, te o promisiuneI funct,ie nestricta

I force

I fort,eaza respectarea unei promisiuni, evaluândexpresia doar la prima aplicare, s, i salvându-i valoarea

I începând cu a doua invocare, întoarce, direct,valoarea memorata

169 / 423

Page 605: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

PromisiuniDescriere

I Rezultatul înca neevaluat al unei expresii

I Exemplu: (delay (* 5 6))

I Valori de prim rang în limbaj (v. slide-ul 96)

I delay

I construies, te o promisiuneI funct,ie nestricta

I force

I fort,eaza respectarea unei promisiuni, evaluândexpresia doar la prima aplicare, s, i salvându-i valoarea

I începând cu a doua invocare, întoarce, direct,valoarea memorata

169 / 423

Page 606: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

PromisiuniDescriere

I Rezultatul înca neevaluat al unei expresii

I Exemplu: (delay (* 5 6))

I Valori de prim rang în limbaj (v. slide-ul 96)

I delay

I construies, te o promisiuneI funct,ie nestricta

I force

I fort,eaza respectarea unei promisiuni, evaluândexpresia doar la prima aplicare, s, i salvându-i valoarea

I începând cu a doua invocare, întoarce, direct,valoarea memorata

169 / 423

Page 607: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

PromisiuniDescriere

I Rezultatul înca neevaluat al unei expresii

I Exemplu: (delay (* 5 6))

I Valori de prim rang în limbaj (v. slide-ul 96)

I delay

I construies, te o promisiuneI funct,ie nestricta

I force

I fort,eaza respectarea unei promisiuni, evaluândexpresia doar la prima aplicare, s, i salvându-i valoarea

I începând cu a doua invocare, întoarce, direct,valoarea memorata

169 / 423

Page 608: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

PromisiuniDescriere

I Rezultatul înca neevaluat al unei expresii

I Exemplu: (delay (* 5 6))

I Valori de prim rang în limbaj (v. slide-ul 96)

I delay

I construies, te o promisiune

I funct,ie nestricta

I force

I fort,eaza respectarea unei promisiuni, evaluândexpresia doar la prima aplicare, s, i salvându-i valoarea

I începând cu a doua invocare, întoarce, direct,valoarea memorata

169 / 423

Page 609: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

PromisiuniDescriere

I Rezultatul înca neevaluat al unei expresii

I Exemplu: (delay (* 5 6))

I Valori de prim rang în limbaj (v. slide-ul 96)

I delay

I construies, te o promisiuneI funct,ie nestricta

I force

I fort,eaza respectarea unei promisiuni, evaluândexpresia doar la prima aplicare, s, i salvându-i valoarea

I începând cu a doua invocare, întoarce, direct,valoarea memorata

169 / 423

Page 610: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

PromisiuniDescriere

I Rezultatul înca neevaluat al unei expresii

I Exemplu: (delay (* 5 6))

I Valori de prim rang în limbaj (v. slide-ul 96)

I delay

I construies, te o promisiuneI funct,ie nestricta

I force

I fort,eaza respectarea unei promisiuni, evaluândexpresia doar la prima aplicare, s, i salvându-i valoarea

I începând cu a doua invocare, întoarce, direct,valoarea memorata

169 / 423

Page 611: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

PromisiuniDescriere

I Rezultatul înca neevaluat al unei expresii

I Exemplu: (delay (* 5 6))

I Valori de prim rang în limbaj (v. slide-ul 96)

I delay

I construies, te o promisiuneI funct,ie nestricta

I force

I fort,eaza respectarea unei promisiuni, evaluândexpresia doar la prima aplicare, s, i salvându-i valoarea

I începând cu a doua invocare, întoarce, direct,valoarea memorata

169 / 423

Page 612: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

PromisiuniDescriere

I Rezultatul înca neevaluat al unei expresii

I Exemplu: (delay (* 5 6))

I Valori de prim rang în limbaj (v. slide-ul 96)

I delay

I construies, te o promisiuneI funct,ie nestricta

I force

I fort,eaza respectarea unei promisiuni, evaluândexpresia doar la prima aplicare, s, i salvându-i valoarea

I începând cu a doua invocare, întoarce, direct,valoarea memorata

169 / 423

Page 613: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Observat,ii

I Dependent,a între mecanismul de întârziere s, i cel deevaluare ulterioara a expresiilor — închideri/ aplicat,ii(varianta 3), delay/ force (varianta 4) etc.

I Numar mare de modificari la înlocuireaunui mecanism existent, utilizat de un numar marede funct,ii

I Cum se pot diminua dependent,ele?

170 / 423

Page 614: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Mecanisme

Abstractizare de date

Fluxuri

Rezolvarea problemelor prin cautare lenes, aîn spat,iul starilor

171 / 423

Page 615: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abstractizare de date I

I Cum reprezentam expresiile cu evaluare întârziata?

I Abordarea din sect,iunea precedenta: 1 singur nivel

Expresii cu evaluare întârziata:utilizare s, i implementare,

sub forma de închideri sau promisiuni

172 / 423

Page 616: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abstractizare de date III Alternativ: 2 nivele,

separate de o bariera de abstractizare

Expresii cu evaluare întârziata,ca entitat,i autonome:

utilizare

Expresii cu evaluare întârziata,ca închideri funct,ionale sau promisiuni:

implementare

Interfat,a: pack, unpack

I Bariera:I limiteaza analiza detaliilorI elimina dependent,ele dintre nivele

173 / 423

Page 617: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abstractizare de date III

I Tehnica de separare a utilizarii unei structuri de datede implementarea acesteia.

I Permit wishful thinking: utilizarea structurii înainteaimplementarii acesteia

174 / 423

Page 618: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Abstractizare de date IV

1 (define-syntax-rule ( pack expr)

2 (delay expr)) ; sau (lambda () expr)

3

4 (define unpack force) ; sau (lambda (p) (p))

5

6 (define (prod x y)

7 (if x (* ( unpack y) (+ ( unpack y) 1)) 0))

8

9 (define (test x)

10 (let ([y 5])

11 (prod x ( pack (begin (display "y") y)))))

175 / 423

Page 619: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Mecanisme

Abstractizare de date

Fluxuri

Rezolvarea problemelor prin cautare lenes, aîn spat,iul starilor

176 / 423

Page 620: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Motivat,ie

Sa se determine suma numerelor pare din intervalul [a,b].

1 (define (even-sum-iter a b)

2 (let iter ([n a]

3 [sum 0])

4 (cond [(> n b) sum]

5 [(even? n) (iter (+ n 1) (+ sum n))]

6 [else (iter (+ n 1) sum)])))

7

8 (define (even-sum-lists a b)

9 (foldl + 0 (filter even? (interval a b))))

177 / 423

Page 621: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Comparat,ie

I Varianta iterativa (d.p.d.v. proces):

I eficienta, datorita spat,iului suplimentar constantI nu foarte lizibila

I Varianta pe liste:

I eleganta s, i concisaI ineficienta, datorita

I spat,iului posibil mare ocupat la un moment dat— toate numerele din intervalul [a,b]

I parcurgerii repetate a intervalului(interval, filter, foldl)

I Cum îmbinam avantajele celor doua abordari?

178 / 423

Page 622: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Comparat,ie

I Varianta iterativa (d.p.d.v. proces):I eficienta, datorita spat,iului suplimentar constant

I nu foarte lizibila

I Varianta pe liste:

I eleganta s, i concisaI ineficienta, datorita

I spat,iului posibil mare ocupat la un moment dat— toate numerele din intervalul [a,b]

I parcurgerii repetate a intervalului(interval, filter, foldl)

I Cum îmbinam avantajele celor doua abordari?

178 / 423

Page 623: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Comparat,ie

I Varianta iterativa (d.p.d.v. proces):I eficienta, datorita spat,iului suplimentar constantI nu foarte lizibila

I Varianta pe liste:

I eleganta s, i concisaI ineficienta, datorita

I spat,iului posibil mare ocupat la un moment dat— toate numerele din intervalul [a,b]

I parcurgerii repetate a intervalului(interval, filter, foldl)

I Cum îmbinam avantajele celor doua abordari?

178 / 423

Page 624: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Comparat,ie

I Varianta iterativa (d.p.d.v. proces):I eficienta, datorita spat,iului suplimentar constantI nu foarte lizibila

I Varianta pe liste:

I eleganta s, i concisaI ineficienta, datorita

I spat,iului posibil mare ocupat la un moment dat— toate numerele din intervalul [a,b]

I parcurgerii repetate a intervalului(interval, filter, foldl)

I Cum îmbinam avantajele celor doua abordari?

178 / 423

Page 625: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Comparat,ie

I Varianta iterativa (d.p.d.v. proces):I eficienta, datorita spat,iului suplimentar constantI nu foarte lizibila

I Varianta pe liste:I eleganta s, i concisa

I ineficienta, datorita

I spat,iului posibil mare ocupat la un moment dat— toate numerele din intervalul [a,b]

I parcurgerii repetate a intervalului(interval, filter, foldl)

I Cum îmbinam avantajele celor doua abordari?

178 / 423

Page 626: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Comparat,ie

I Varianta iterativa (d.p.d.v. proces):I eficienta, datorita spat,iului suplimentar constantI nu foarte lizibila

I Varianta pe liste:I eleganta s, i concisaI ineficienta, datorita

I spat,iului posibil mare ocupat la un moment dat— toate numerele din intervalul [a,b]

I parcurgerii repetate a intervalului(interval, filter, foldl)

I Cum îmbinam avantajele celor doua abordari?

178 / 423

Page 627: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Comparat,ie

I Varianta iterativa (d.p.d.v. proces):I eficienta, datorita spat,iului suplimentar constantI nu foarte lizibila

I Varianta pe liste:I eleganta s, i concisaI ineficienta, datorita

I spat,iului posibil mare ocupat la un moment dat— toate numerele din intervalul [a,b]

I parcurgerii repetate a intervalului(interval, filter, foldl)

I Cum îmbinam avantajele celor doua abordari?

178 / 423

Page 628: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Comparat,ie

I Varianta iterativa (d.p.d.v. proces):I eficienta, datorita spat,iului suplimentar constantI nu foarte lizibila

I Varianta pe liste:I eleganta s, i concisaI ineficienta, datorita

I spat,iului posibil mare ocupat la un moment dat— toate numerele din intervalul [a,b]

I parcurgerii repetate a intervalului(interval, filter, foldl)

I Cum îmbinam avantajele celor doua abordari?

178 / 423

Page 629: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Comparat,ie

I Varianta iterativa (d.p.d.v. proces):I eficienta, datorita spat,iului suplimentar constantI nu foarte lizibila

I Varianta pe liste:I eleganta s, i concisaI ineficienta, datorita

I spat,iului posibil mare ocupat la un moment dat— toate numerele din intervalul [a,b]

I parcurgerii repetate a intervalului(interval, filter, foldl)

I Cum îmbinam avantajele celor doua abordari?

178 / 423

Page 630: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Caracteristicile fluxurilor

I Secvent,e construite part,ial, extinse la cerere, cecreeaza iluzia completitudinii structurii

I Îmbinarea elegant,ei manipularii listelorcu eficient,a calculului incremental

I Bariera de abstractizare:

I componentele listelor evaluate la construct,ie (cons)I ale fluxurilor la select,ie (cdr)

I Construct,ia s, i utilizarea:

I separate la nivel conceptual — modularitateI întrepatrunse la nivel de proces

179 / 423

Page 631: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Caracteristicile fluxurilor

I Secvent,e construite part,ial, extinse la cerere, cecreeaza iluzia completitudinii structurii

I Îmbinarea elegant,ei manipularii listelorcu eficient,a calculului incremental

I Bariera de abstractizare:

I componentele listelor evaluate la construct,ie (cons)I ale fluxurilor la select,ie (cdr)

I Construct,ia s, i utilizarea:

I separate la nivel conceptual — modularitateI întrepatrunse la nivel de proces

179 / 423

Page 632: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Caracteristicile fluxurilor

I Secvent,e construite part,ial, extinse la cerere, cecreeaza iluzia completitudinii structurii

I Îmbinarea elegant,ei manipularii listelorcu eficient,a calculului incremental

I Bariera de abstractizare:

I componentele listelor evaluate la construct,ie (cons)I ale fluxurilor la select,ie (cdr)

I Construct,ia s, i utilizarea:

I separate la nivel conceptual — modularitateI întrepatrunse la nivel de proces

179 / 423

Page 633: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Caracteristicile fluxurilor

I Secvent,e construite part,ial, extinse la cerere, cecreeaza iluzia completitudinii structurii

I Îmbinarea elegant,ei manipularii listelorcu eficient,a calculului incremental

I Bariera de abstractizare:I componentele listelor evaluate la construct,ie (cons)

I ale fluxurilor la select,ie (cdr)

I Construct,ia s, i utilizarea:

I separate la nivel conceptual — modularitateI întrepatrunse la nivel de proces

179 / 423

Page 634: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Caracteristicile fluxurilor

I Secvent,e construite part,ial, extinse la cerere, cecreeaza iluzia completitudinii structurii

I Îmbinarea elegant,ei manipularii listelorcu eficient,a calculului incremental

I Bariera de abstractizare:I componentele listelor evaluate la construct,ie (cons)I ale fluxurilor la select,ie (cdr)

I Construct,ia s, i utilizarea:

I separate la nivel conceptual — modularitateI întrepatrunse la nivel de proces

179 / 423

Page 635: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Caracteristicile fluxurilor

I Secvent,e construite part,ial, extinse la cerere, cecreeaza iluzia completitudinii structurii

I Îmbinarea elegant,ei manipularii listelorcu eficient,a calculului incremental

I Bariera de abstractizare:I componentele listelor evaluate la construct,ie (cons)I ale fluxurilor la select,ie (cdr)

I Construct,ia s, i utilizarea:

I separate la nivel conceptual — modularitateI întrepatrunse la nivel de proces

179 / 423

Page 636: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Caracteristicile fluxurilor

I Secvent,e construite part,ial, extinse la cerere, cecreeaza iluzia completitudinii structurii

I Îmbinarea elegant,ei manipularii listelorcu eficient,a calculului incremental

I Bariera de abstractizare:I componentele listelor evaluate la construct,ie (cons)I ale fluxurilor la select,ie (cdr)

I Construct,ia s, i utilizarea:I separate la nivel conceptual — modularitate

I întrepatrunse la nivel de proces

179 / 423

Page 637: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Caracteristicile fluxurilor

I Secvent,e construite part,ial, extinse la cerere, cecreeaza iluzia completitudinii structurii

I Îmbinarea elegant,ei manipularii listelorcu eficient,a calculului incremental

I Bariera de abstractizare:I componentele listelor evaluate la construct,ie (cons)I ale fluxurilor la select,ie (cdr)

I Construct,ia s, i utilizarea:I separate la nivel conceptual — modularitateI întrepatrunse la nivel de proces

179 / 423

Page 638: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Operatori

3 (define-syntax-rule (stream-cons head tail)

4 (cons head (pack tail)))

5

6 (define stream-first car)

7

8 (define stream-rest (compose unpack cdr))

9

10 (define empty-stream '())

11

12 (define stream-empty? null?)

180 / 423

Page 639: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Barierele de abstractizare

Fluxuri,ca entitat,i autonome:

utilizare

Expresii cu evaluare întârziata,ca entitat,i autonome:

utilizare

Fluxuri, ca perechi cont,inândexpresii cu evaluare întârziata:

implementare

Expresii cu evaluare întârziata,ca închideri funct,ionale sau promisiuni:

implementare

Interfat,a: pack, unpack

Interfat,a: stream-*

181 / 423

Page 640: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul de numere 1Implementare

5 (define ones (stream-cons 1 ones))

6 ; (stream-take 5 ones) ; (1 1 1 1 1)

:

1 1 1

1

1 1 1

ones

I Linii continue: fluxuri

I Linii întrerupte: intrari scalare, utilizate o singura data

I Cifre: intrari / ies, iri182 / 423

Page 641: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul de numere 1Implementare

5 (define ones (stream-cons 1 ones))

6 ; (stream-take 5 ones) ; (1 1 1 1 1)

:

1 1

1

1

1 1

1ones

I Linii continue: fluxuri

I Linii întrerupte: intrari scalare, utilizate o singura data

I Cifre: intrari / ies, iri182 / 423

Page 642: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul de numere 1Implementare

5 (define ones (stream-cons 1 ones))

6 ; (stream-take 5 ones) ; (1 1 1 1 1)

:

1

1 1

1

1

1 1ones

I Linii continue: fluxuri

I Linii întrerupte: intrari scalare, utilizate o singura data

I Cifre: intrari / ies, iri182 / 423

Page 643: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul de numere 1Implementare

5 (define ones (stream-cons 1 ones))

6 ; (stream-take 5 ones) ; (1 1 1 1 1)

:

1 1 1

1

1 1 1ones

I Linii continue: fluxuri

I Linii întrerupte: intrari scalare, utilizate o singura data

I Cifre: intrari / ies, iri182 / 423

Page 644: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul de numere 1Utilizarea memoriei

Atât cu închideri, cât s, i cu promisiuni, extinderease realizeaza în spat,iu constant:

1

Alternativ: (define ones (pack (cons 1 ones)))

I închideri:

1 1 . . .

I promisiuni:

1

183 / 423

Page 645: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul de numere 1Utilizarea memoriei

Atât cu închideri, cât s, i cu promisiuni, extinderease realizeaza în spat,iu constant:

1

Alternativ: (define ones (pack (cons 1 ones)))

I închideri:

1 1 . . .

I promisiuni:

1

183 / 423

Page 646: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul de numere 1Utilizarea memoriei

Atât cu închideri, cât s, i cu promisiuni, extinderease realizeaza în spat,iu constant:

1

Alternativ: (define ones (pack (cons 1 ones)))

I închideri:

1 1 . . .

I promisiuni:

1

183 / 423

Page 647: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul de numere 1Utilizarea memoriei

Atât cu închideri, cât s, i cu promisiuni, extinderease realizeaza în spat,iu constant:

1

Alternativ: (define ones (pack (cons 1 ones)))

I închideri:

1 1 . . .

I promisiuni:

1

183 / 423

Page 648: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor naturaleFormulare explicita

10 (define (naturals-from n)

11 (stream-cons n (naturals-from (+ n 1))))

12

13 (define naturals (naturals-from 0))

I Închideri: multiple parcurgeri ale fluxului determinareevaluarea port,iunilor deja explorate

I Explorarea 1, cu 3 elemente: 0 1 2I Explorarea 2, cu 5 elemente: 0 1 2 3 4

I Promisiuni: multiple parcurgeri ale fluxului determinaevaluarea dincolo de port,iunile deja explorate

I Explorarea 1, cu 3 elemente: 0 1 2I Explorarea 2, cu 5 elemente: 0 1 2 3 4

184 / 423

Page 649: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor naturaleFormulare explicita

10 (define (naturals-from n)

11 (stream-cons n (naturals-from (+ n 1))))

12

13 (define naturals (naturals-from 0))

I Închideri: multiple parcurgeri ale fluxului determinareevaluarea port,iunilor deja explorate

I Explorarea 1, cu 3 elemente: 0 1 2I Explorarea 2, cu 5 elemente: 0 1 2 3 4

I Promisiuni: multiple parcurgeri ale fluxului determinaevaluarea dincolo de port,iunile deja explorate

I Explorarea 1, cu 3 elemente: 0 1 2I Explorarea 2, cu 5 elemente: 0 1 2 3 4

184 / 423

Page 650: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor naturaleFormulare explicita

10 (define (naturals-from n)

11 (stream-cons n (naturals-from (+ n 1))))

12

13 (define naturals (naturals-from 0))

I Închideri: multiple parcurgeri ale fluxului determinareevaluarea port,iunilor deja explorate

I Explorarea 1, cu 3 elemente: 0 1 2

I Explorarea 2, cu 5 elemente: 0 1 2 3 4

I Promisiuni: multiple parcurgeri ale fluxului determinaevaluarea dincolo de port,iunile deja explorate

I Explorarea 1, cu 3 elemente: 0 1 2I Explorarea 2, cu 5 elemente: 0 1 2 3 4

184 / 423

Page 651: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor naturaleFormulare explicita

10 (define (naturals-from n)

11 (stream-cons n (naturals-from (+ n 1))))

12

13 (define naturals (naturals-from 0))

I Închideri: multiple parcurgeri ale fluxului determinareevaluarea port,iunilor deja explorate

I Explorarea 1, cu 3 elemente: 0 1 2I Explorarea 2, cu 5 elemente: 0 1 2 3 4

I Promisiuni: multiple parcurgeri ale fluxului determinaevaluarea dincolo de port,iunile deja explorate

I Explorarea 1, cu 3 elemente: 0 1 2I Explorarea 2, cu 5 elemente: 0 1 2 3 4

184 / 423

Page 652: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor naturaleFormulare explicita

10 (define (naturals-from n)

11 (stream-cons n (naturals-from (+ n 1))))

12

13 (define naturals (naturals-from 0))

I Închideri: multiple parcurgeri ale fluxului determinareevaluarea port,iunilor deja explorate

I Explorarea 1, cu 3 elemente: 0 1 2I Explorarea 2, cu 5 elemente: 0 1 2 3 4

I Promisiuni: multiple parcurgeri ale fluxului determinaevaluarea dincolo de port,iunile deja explorate

I Explorarea 1, cu 3 elemente: 0 1 2I Explorarea 2, cu 5 elemente: 0 1 2 3 4

184 / 423

Page 653: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor naturaleFormulare explicita

10 (define (naturals-from n)

11 (stream-cons n (naturals-from (+ n 1))))

12

13 (define naturals (naturals-from 0))

I Închideri: multiple parcurgeri ale fluxului determinareevaluarea port,iunilor deja explorate

I Explorarea 1, cu 3 elemente: 0 1 2I Explorarea 2, cu 5 elemente: 0 1 2 3 4

I Promisiuni: multiple parcurgeri ale fluxului determinaevaluarea dincolo de port,iunile deja explorate

I Explorarea 1, cu 3 elemente: 0 1 2

I Explorarea 2, cu 5 elemente: 0 1 2 3 4

184 / 423

Page 654: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor naturaleFormulare explicita

10 (define (naturals-from n)

11 (stream-cons n (naturals-from (+ n 1))))

12

13 (define naturals (naturals-from 0))

I Închideri: multiple parcurgeri ale fluxului determinareevaluarea port,iunilor deja explorate

I Explorarea 1, cu 3 elemente: 0 1 2I Explorarea 2, cu 5 elemente: 0 1 2 3 4

I Promisiuni: multiple parcurgeri ale fluxului determinaevaluarea dincolo de port,iunile deja explorate

I Explorarea 1, cu 3 elemente: 0 1 2I Explorarea 2, cu 5 elemente: 0 1 2 3 4

184 / 423

Page 655: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor naturaleFormulare implicita

17 (define naturals

18 (stream-cons 0

19 (stream-zip-with +

20 ones

21 naturals)))

1 1 1ones

+

3 2 1 0

:

0

3 2 1 0

naturals

185 / 423

Page 656: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor naturaleFormulare implicita

17 (define naturals

18 (stream-cons 0

19 (stream-zip-with +

20 ones

21 naturals)))

1 1 1ones

+

3 2 1

0

:

0

3 2 1

0naturals

185 / 423

Page 657: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor naturaleFormulare implicita

17 (define naturals

18 (stream-cons 0

19 (stream-zip-with +

20 ones

21 naturals)))

1 1 1ones

+

3 2

1 0

:

0

3 2

1 0naturals

185 / 423

Page 658: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor naturaleFormulare implicita

17 (define naturals

18 (stream-cons 0

19 (stream-zip-with +

20 ones

21 naturals)))

1 1 1ones

+

3

2 1 0

:

0

3

2 1 0naturals

185 / 423

Page 659: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor naturaleFormulare implicita

17 (define naturals

18 (stream-cons 0

19 (stream-zip-with +

20 ones

21 naturals)))

1 1 1ones

+

3 2 1 0

:

0

3 2 1 0naturals

185 / 423

Page 660: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor pare

25 (define even-naturals-1

26 (stream-filter even? naturals))

27

28 (define even-naturals-2

29 (stream-zip-with + naturals naturals))

186 / 423

Page 661: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul sumelor part,iale ale altui flux

33 (define (sums s)

34 (letrec ([out (stream-cons

35 0

36 (stream-zip-with + s out))])

37 out))

s2 s1 s0

s+

s0,2 s0,1 s0 0

:

0

s0,2 s0,1 s0 0

sums

si ,j = si + . . .+ sj

187 / 423

Page 662: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul sumelor part,iale ale altui flux

33 (define (sums s)

34 (letrec ([out (stream-cons

35 0

36 (stream-zip-with + s out))])

37 out))

s2 s1 s0

s+

s0,2 s0,1 s0

0

:

0

s0,2 s0,1 s0

0sums

si ,j = si + . . .+ sj

187 / 423

Page 663: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul sumelor part,iale ale altui flux

33 (define (sums s)

34 (letrec ([out (stream-cons

35 0

36 (stream-zip-with + s out))])

37 out))

s2 s1 s0

s+

s0,2 s0,1

s0 0

:

0

s0,2 s0,1

s0 0sums

si ,j = si + . . .+ sj

187 / 423

Page 664: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul sumelor part,iale ale altui flux

33 (define (sums s)

34 (letrec ([out (stream-cons

35 0

36 (stream-zip-with + s out))])

37 out))

s2 s1 s0

s+

s0,2

s0,1 s0 0

:

0

s0,2

s0,1 s0 0sums

si ,j = si + . . .+ sj

187 / 423

Page 665: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul sumelor part,iale ale altui flux

33 (define (sums s)

34 (letrec ([out (stream-cons

35 0

36 (stream-zip-with + s out))])

37 out))

s2 s1 s0

s+

s0,2 s0,1 s0 0

:

0

s0,2 s0,1 s0 0sums

si ,j = si + . . .+ sj

187 / 423

Page 666: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor FibonacciFormulare implicita

43 (define fibo

44 (stream-cons 0

45 (stream-cons 1

46 (stream-zip-with +

47 fibo

48 (stream-rest fibo)))))

+

3 2 1 1

3 2 1 1 0

:

1

:

0

3 2 1 1 0

fibo

188 / 423

Page 667: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor FibonacciFormulare implicita

43 (define fibo

44 (stream-cons 0

45 (stream-cons 1

46 (stream-zip-with +

47 fibo

48 (stream-rest fibo)))))

+

3 2 1 1

3 2 1 1

0

:

1

:

0

3 2 1 1

0fibo

188 / 423

Page 668: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor FibonacciFormulare implicita

43 (define fibo

44 (stream-cons 0

45 (stream-cons 1

46 (stream-zip-with +

47 fibo

48 (stream-rest fibo)))))

+

3 2 1

1

3 2 1

1 0

:

1

:

0

3 2 1

1 0fibo

188 / 423

Page 669: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor FibonacciFormulare implicita

43 (define fibo

44 (stream-cons 0

45 (stream-cons 1

46 (stream-zip-with +

47 fibo

48 (stream-rest fibo)))))

+

3 2

1 1

3 2

1 1 0

:

1

:

0

3 2

1 1 0fibo

188 / 423

Page 670: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor FibonacciFormulare implicita

43 (define fibo

44 (stream-cons 0

45 (stream-cons 1

46 (stream-zip-with +

47 fibo

48 (stream-rest fibo)))))

+

3

2 1 1

3

2 1 1 0

:

1

:

0

3

2 1 1 0fibo

188 / 423

Page 671: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor FibonacciFormulare implicita

43 (define fibo

44 (stream-cons 0

45 (stream-cons 1

46 (stream-zip-with +

47 fibo

48 (stream-rest fibo)))))

+

3 2 1 1

3 2 1 1 0

:

1

:

0

3 2 1 1 0fibo

188 / 423

Page 672: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor prime I

I Ciurul lui Eratostene

I Pornim de la fluxul numerelor naturale, începând cu 2

I Elementul curent din fluxul init,ial apart,ine fluxuluinumerelor prime

I Restul fluxului se obt,ineI eliminând multiplii elementului curent din fluxul init,ialI continuând procesul de filtrare, cu elementul urmator

189 / 423

Page 673: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Fluxul numerelor prime II

52 (define (sieve s)

53 (if (stream-empty? s) s

54 (stream-cons

55 (stream-first s)

56 (sieve

57 (stream-filter

58 (lambda (n)

59 (not (zero? (remainder

60 n

61 (stream-first s)))))

62 (stream-rest s))))))

63

64 (define primes (sieve (naturals-from 2)))

190 / 423

Page 674: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Grafuri ciclice I

afirst b first

second

second

Fiecare nod cont,ine:

I cheia: keyI legaturile catre doua noduri: first, second

191 / 423

Page 675: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Grafuri ciclice II

3 (define-syntax-rule (node key fst snd)

4 (pack (list key fst snd)))

5

6 (define key car)

7 (define fst (compose unpack cadr))

8 (define snd (compose unpack caddr))

9

10 (define graph

11 (letrec ([a (node 'a a b)]

12 [b (node 'b b a)])

13 (unpack a)))

14

15 (eq? graph (fst graph)) ; similar cu == din Java

16 ; #f pentru inchideri, #t pentru promisiuni

192 / 423

Page 676: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Grafuri ciclice IIII Explorarea grafului în cazul închiderilor:

nodurile sunt regenerate la fiecare vizitare

a

a

a

. . .

. . .

b

. . .

. . .

b

b

. . .

. . .

a

. . .

. . .

193 / 423

Page 677: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Mecanisme

Abstractizare de date

Fluxuri

Rezolvarea problemelor prin cautare lenes, aîn spat,iul starilor

194 / 423

Page 678: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Spat,iul starilor unei probleme

Mult,imea configurat,iilor valide din universul problemei

195 / 423

Page 679: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Problema palindroamelorDefinit,ie

I Paln: Sa se determine palindroamele de lungimecel put,in n, care se pot forma cu elementele unuialfabet fixat.

I Starile problemei: toate s, irurile generabilecu elementele alfabetului respectiv

196 / 423

Page 680: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Problema palindroamelorDefinit,ie

I Paln: Sa se determine palindroamele de lungimecel put,in n, care se pot forma cu elementele unuialfabet fixat.

I Starile problemei: toate s, irurile generabilecu elementele alfabetului respectiv

196 / 423

Page 681: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Problema palindroamelorSpat,iul starilor lui Pal2

/0

b

bbbbb

abba:

b:

abbab

aaba:

b:a:

b:

a

babba

abaa:

b:

aabaa

aaaa:

b:a:

b:a:

b:

197 / 423

Page 682: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Problema palindroamelorSpecificare Paln

I Starea init,iala: s, irul vid

I Operatorii de generare a starilor succesoare alteia:inserarea unui caracter la începutul unui s, ir dat

I Operatorul de verificare a proprietatat,ii de solut,iepentru o stare: palindrom, de lungime cel put,in n

198 / 423

Page 683: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Problema palindroamelorSpecificare Paln

I Starea init,iala: s, irul vid

I Operatorii de generare a starilor succesoare alteia:inserarea unui caracter la începutul unui s, ir dat

I Operatorul de verificare a proprietatat,ii de solut,iepentru o stare: palindrom, de lungime cel put,in n

198 / 423

Page 684: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Problema palindroamelorSpecificare Paln

I Starea init,iala: s, irul vid

I Operatorii de generare a starilor succesoare alteia:inserarea unui caracter la începutul unui s, ir dat

I Operatorul de verificare a proprietatat,ii de solut,iepentru o stare: palindrom, de lungime cel put,in n

198 / 423

Page 685: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cautare în spat,iul starilor

I Spat,iul starilor ca graf:

I noduri: stariI muchii (orientate): transformari ale starilor în stari

succesor

I Posibile strategii de cautare:

I lat,ime: completa s, i optimalaI adâncime: incompleta s, i suboptimala

199 / 423

Page 686: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cautare în spat,iul starilor

I Spat,iul starilor ca graf:I noduri: stari

I muchii (orientate): transformari ale starilor în starisuccesor

I Posibile strategii de cautare:

I lat,ime: completa s, i optimalaI adâncime: incompleta s, i suboptimala

199 / 423

Page 687: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cautare în spat,iul starilor

I Spat,iul starilor ca graf:I noduri: stariI muchii (orientate): transformari ale starilor în stari

succesor

I Posibile strategii de cautare:

I lat,ime: completa s, i optimalaI adâncime: incompleta s, i suboptimala

199 / 423

Page 688: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cautare în spat,iul starilor

I Spat,iul starilor ca graf:I noduri: stariI muchii (orientate): transformari ale starilor în stari

succesor

I Posibile strategii de cautare:

I lat,ime: completa s, i optimalaI adâncime: incompleta s, i suboptimala

199 / 423

Page 689: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cautare în spat,iul starilor

I Spat,iul starilor ca graf:I noduri: stariI muchii (orientate): transformari ale starilor în stari

succesor

I Posibile strategii de cautare:I lat,ime: completa s, i optimala

I adâncime: incompleta s, i suboptimala

199 / 423

Page 690: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cautare în spat,iul starilor

I Spat,iul starilor ca graf:I noduri: stariI muchii (orientate): transformari ale starilor în stari

succesor

I Posibile strategii de cautare:I lat,ime: completa s, i optimalaI adâncime: incompleta s, i suboptimala

199 / 423

Page 691: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cautare în lat,ime

1 (define (breadth-search-goal init expand goal?)

2 (let search ([states (list init)])

3 (if (null? states) '()

4 (let ([state (car states)]

5 [states (cdr states)])

6 (if (goal? state) state

7 (search (append states

8 (expand

9 state))))))))

I Generarea unei singure solut,ii

I Cum le obt,inem pe celelalte, mai ales daca spat,iuleste infinit?

200 / 423

Page 692: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cautare în lat,ime

1 (define (breadth-search-goal init expand goal?)

2 (let search ([states (list init)])

3 (if (null? states) '()

4 (let ([state (car states)]

5 [states (cdr states)])

6 (if (goal? state) state

7 (search (append states

8 (expand

9 state))))))))

I Generarea unei singure solut,ii

I Cum le obt,inem pe celelalte, mai ales daca spat,iuleste infinit?

200 / 423

Page 693: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cautare în lat,ime

1 (define (breadth-search-goal init expand goal?)

2 (let search ([states (list init)])

3 (if (null? states) '()

4 (let ([state (car states)]

5 [states (cdr states)])

6 (if (goal? state) state

7 (search (append states

8 (expand

9 state))))))))

I Generarea unei singure solut,ii

I Cum le obt,inem pe celelalte, mai ales daca spat,iuleste infinit?

200 / 423

Page 694: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cautare lenes, a în lat,ime IFluxul starilor solut,ie

3 (define (lazy-breadth-search init expand)

4 (let search

5 ([states (stream-cons init empty-stream)])

6 (if (stream-empty? states) states

7 (let ([state (stream-first states)]

8 [states (stream-rest states)])

9 (stream-cons

10 state

11 (search (stream-append

12 states

13 (expand state))))))))

14

15 (define (lazy-breadth-search-goal

16 init expand goal?)

17 (stream-filter goal?

201 / 423

Page 695: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cautare lenes, a în lat,ime IIFluxul starilor solut,ie

18 (lazy-breadth-search init

19 expand)))

I La nivel înalt, conceptual: separare între explorareaspat,iului s, i identificarea starilor solut,ie

I La nivelul scazut, al instruct,iunilor: întrepatrundereacelor doua aspecte

202 / 423

Page 696: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aplicat,ii

I Palindroame

I Problema reginelor

203 / 423

Page 697: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Problema reginelorDefinit,ie

I Queensn: Sa se determine toate modurilede amplasare a n regine pe o tabla de s, ahde dimensiune n, astfel încât oricare douasa nu se atace.

I Starile problemei: configurat,iile, eventual part,iale,ale tablei

204 / 423

Page 698: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Problema reginelorDefinit,ie

I Queensn: Sa se determine toate modurilede amplasare a n regine pe o tabla de s, ahde dimensiune n, astfel încât oricare douasa nu se atace.

I Starile problemei: configurat,iile, eventual part,iale,ale tablei

204 / 423

Page 699: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Problema reginelorSpat,iul starilor lui Queens4

/0

• . . .

• ••

••

••

••

• ••

••

••

••

• . . .

205 / 423

Page 700: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezumat

Evaluarea lenes, a permite un stil de programarede nivel înalt, prin separarea aparenta a diverselor

aspecte — de exemplu, construct,ia s, i accesarea listelor.

206 / 423

Page 701: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Bibliografie

Abelson, H. and Sussman, G. J. (1996). Structure andInterpretation of Computer Programs. MIT Press,Cambridge, MA, USA, 2nd edition.

207 / 423

Page 702: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Partea VII

Limbajul Haskell

208 / 423

Page 703: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Evaluare

Tipare

Sinteza de tip

209 / 423

Page 704: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Evaluare

Tipare

Sinteza de tip

210 / 423

Page 705: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Paralela între limbaje

Criteriu Scheme HaskellFunct,ii Curried / uncurried CurriedEvaluare Aplicativa Lenes, aTipare Dinamica, tare Statica, tareLegareavariabilelor

Locale → statica,top-level → dinamica

Statica

211 / 423

Page 706: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii

I Curried

I Aplicabile asupra oricâtor parametri la un moment dat

1 add1 x y = x + y

2 add2 = \x y -> x + y

3 add3 = \x -> \y -> x + y

4

5 result = add1 1 2 -- sau ((add1 1) 2)

6 inc = add1 1 -- functie

212 / 423

Page 707: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii s, i operatori

I Aplicabilitatea part,iala a operatorilor infixat,i (sect,iuni)

I Transformari operator→funct,ie s, i funct,ie→operator

1 add4 = (+)

2

3 result1 = (+) 1 2 -- operator ca functie

4 result2 = 1 ‘add4‘ 2 -- functie ca operator

5

6 inc1 = (1 +) -- sectiuni

7 inc2 = (+ 1)

8 inc3 = (1 ‘add4‘)

9 inc4 = (‘add4‘ 1)

213 / 423

Page 708: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Pattern matching

Definirea comportamentului funct,iilor pornind de lastructura parametrilor — traducerea axiomelor TDA

1 add5 0 y = y -- add5 1 2

2 add5 (x + 1) y = 1 + add5 x y

3

4 listSum [] = 0 -- sumList [1, 2, 3]

5 listSum (hd : tl) = hd + listSum tl

6

7 pairSum (x, y) = x + y -- sumPair (1, 2)

8

9 wackySum (x, y, z@(hd : _)) = -- wackySum

10 x + y + hd + listSum z -- (1, 2, [3, 4, 5])

214 / 423

Page 709: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

List comprehensions

Definirea listelor prin proprietat,ile elementelor, similarunei specificat,ii matematice

1 squares lst = [ x * x | x <- lst ]

2

3 qSort [] = []

4 qSort (h : t) = qSort [ x | x <- t, x <= h ]

5 ++ [h]

6 ++ qSort [ x | x <- t, x > h ]

7

8 interval = [ 0 .. 10 ]

9 evenInterval = [ 0, 2 .. 10 ]

10 naturals = [ 0 .. ]

215 / 423

Page 710: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Evaluare

Tipare

Sinteza de tip

216 / 423

Page 711: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluare

I Evaluare lenes, a: parametri evaluat,i la cerere, cel multo data, eventual part,ial, în cazul obiectelor structurate

I Funct,ii nestricte!

1 f (x, y) z = x + x

2

3 f (2 + 3, 3 + 5) (5 + 8)

4 → (2 + 3) + (2 + 3)

5 → 5 + 5 -- reutilizam rezultatul primei evauari

6 → 10

217 / 423

Page 712: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluare

I Evaluare lenes, a: parametri evaluat,i la cerere, cel multo data, eventual part,ial, în cazul obiectelor structurate

I Funct,ii nestricte!

1 f (x, y) z = x + x

2

3 f (2 + 3, 3 + 5) (5 + 8)

4 → (2 + 3) + (2 + 3)

5 → 5 + 5 -- reutilizam rezultatul primei evauari

6 → 10

217 / 423

Page 713: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluare

I Evaluare lenes, a: parametri evaluat,i la cerere, cel multo data, eventual part,ial, în cazul obiectelor structurate

I Funct,ii nestricte!

1 f (x, y) z = x + x

2

3 f (2 + 3, 3 + 5) (5 + 8)

4 → (2 + 3) + (2 + 3)

5 → 5 + 5 -- reutilizam rezultatul primei evauari

6 → 10

217 / 423

Page 714: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluare

I Evaluare lenes, a: parametri evaluat,i la cerere, cel multo data, eventual part,ial, în cazul obiectelor structurate

I Funct,ii nestricte!

1 f (x, y) z = x + x

2

3 f (2 + 3, 3 + 5) (5 + 8)

4 → (2 + 3) + (2 + 3)

5 → 5 + 5 -- reutilizam rezultatul primei evauari

6 → 10

217 / 423

Page 715: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluare

I Evaluare lenes, a: parametri evaluat,i la cerere, cel multo data, eventual part,ial, în cazul obiectelor structurate

I Funct,ii nestricte!

1 f (x, y) z = x + x

2

3 f (2 + 3, 3 + 5) (5 + 8)

4 → (2 + 3) + (2 + 3)

5 → 5 + 5 -- reutilizam rezultatul primei evauari

6 → 10

217 / 423

Page 716: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluare

I Evaluare lenes, a: parametri evaluat,i la cerere, cel multo data, eventual part,ial, în cazul obiectelor structurate

I Funct,ii nestricte!

1 f (x, y) z = x + x

2

3 f (2 + 3, 3 + 5) (5 + 8)

4 → (2 + 3) + (2 + 3)

5 → 5 + 5 -- reutilizam rezultatul primei evauari

6 → 10

217 / 423

Page 717: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluare

I Evaluare lenes, a: parametri evaluat,i la cerere, cel multo data, eventual part,ial, în cazul obiectelor structurate

I Funct,ii nestricte!

1 f (x, y) z = x + x

2

3 f (2 + 3, 3 + 5) (5 + 8)

4 → (2 + 3) + (2 + 3)

5 → 5 + 5 -- reutilizam rezultatul primei evauari

6 → 10

217 / 423

Page 718: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluare

I Evaluare lenes, a: parametri evaluat,i la cerere, cel multo data, eventual part,ial, în cazul obiectelor structurate

I Funct,ii nestricte!

1 f (x, y) z = x + x

2

3 f (2 + 3, 3 + 5) (5 + 8)

4 → (2 + 3) + (2 + 3)

5 → 5 + 5 -- reutilizam rezultatul primei evauari

6 → 10

217 / 423

Page 719: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluare

I Evaluare lenes, a: parametri evaluat,i la cerere, cel multo data, eventual part,ial, în cazul obiectelor structurate

I Funct,ii nestricte!

1 f (x, y) z = x + x

2

3 f (2 + 3, 3 + 5) (5 + 8)

4 → (2 + 3) + (2 + 3)

5 → 5 + 5 -- reutilizam rezultatul primei evauari

6 → 10

217 / 423

Page 720: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Pas, i în aplicarea funct,iilor I

1 front (x : y : zs) = x + y

2 front [x] = x

3

4 notNil [] = False5 notNil (_ : _) = True6

7 f m n

8 | notNil xs = front xs

9 | otherwise = n

10 where11 xs = [m .. n]

Exemplu preluat din Thompson (1999)

218 / 423

Page 721: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Pas, i în aplicarea funct,iilor II

1. Pattern matching: evaluarea parametrilor suficientcât sa se constate (ne-)potrivirea cu pattern-ul

2. Evaluarea garzilor (|)

3. Evaluarea variabilelor locale, la cerere (where, let)

219 / 423

Page 722: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Pas, i în aplicarea funct,iilor III

1 f 3 5

2 ?? notNil xs

3 ?? where4 ?? xs = [3 .. 5]

5 ?? → 3 : [4 .. 5]

6 ?? → notNil (3 : [4 .. 5])

7 ?? → True8 → front xs

9 where10 xs = 3 : [4 .. 5]

11 → 3 : 4 : [5]

12 → front (3 : 4 : [5])

13 → 3 + 4

14 → 7

220 / 423

Page 723: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Consecint,e

I Evaluarea part,iala a obiectelor structurate (liste etc.)

I Liste, implicit, ca fluxuri!

1 ones = 1 : ones

2

3 naturalsFrom n = n : (naturalsFrom (n + 1))

4 naturals1 = naturalsFrom 0

5 naturals2 = 0 : (zipWith (+) ones naturals2)

6

7 evenNaturals1 = filter even naturals1

8 evenNaturals2 = zipWith (+) naturals1 naturals2

9

10 fibo = 0 : 1 :

11 (zipWith (+) fibo (tail fibo))

221 / 423

Page 724: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Evaluare

Tipare

Sinteza de tip

222 / 423

Page 725: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

TipuriI Tipuri ca mult,imi de valori:

I Bool = {True, False}

I Natural = {0, 1, 2, ...}

I Char = {’a’, ’b’, ’c’, ...}

I Tipare statica:I etapa de tipare anterioara etapei de evaluareI asocierea fiecarei expresii din program cu un tip

I Tipare tare: absent,a conversiilor implicite de tip

I Expresii de:I program: 5, 2 + 3, x && (not y)

I tip: Integer, [Char], Char -> Bool, a

223 / 423

Page 726: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

TipuriI Tipuri ca mult,imi de valori:

I Bool = {True, False}

I Natural = {0, 1, 2, ...}

I Char = {’a’, ’b’, ’c’, ...}

I Tipare statica:I etapa de tipare anterioara etapei de evaluareI asocierea fiecarei expresii din program cu un tip

I Tipare tare: absent,a conversiilor implicite de tip

I Expresii de:I program: 5, 2 + 3, x && (not y)

I tip: Integer, [Char], Char -> Bool, a

223 / 423

Page 727: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

TipuriI Tipuri ca mult,imi de valori:

I Bool = {True, False}

I Natural = {0, 1, 2, ...}

I Char = {’a’, ’b’, ’c’, ...}

I Tipare statica:I etapa de tipare anterioara etapei de evaluareI asocierea fiecarei expresii din program cu un tip

I Tipare tare: absent,a conversiilor implicite de tip

I Expresii de:I program: 5, 2 + 3, x && (not y)

I tip: Integer, [Char], Char -> Bool, a

223 / 423

Page 728: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

TipuriI Tipuri ca mult,imi de valori:

I Bool = {True, False}

I Natural = {0, 1, 2, ...}

I Char = {’a’, ’b’, ’c’, ...}

I Tipare statica:I etapa de tipare anterioara etapei de evaluareI asocierea fiecarei expresii din program cu un tip

I Tipare tare: absent,a conversiilor implicite de tip

I Expresii de:I program: 5, 2 + 3, x && (not y)

I tip: Integer, [Char], Char -> Bool, a

223 / 423

Page 729: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemple de tipuri

1 5 :: Integer2 ’a’ :: Char3 inc :: Integer -> Integer4 [1,2,3] :: [Integer]5 (True, "Hello") :: (Bool, [Char])

224 / 423

Page 730: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Tipuri de baza

I Tipurile ale caror valori nu pot fi descompuse

I Exemple:I Bool

I Char

I Integer

I Int

I Float

225 / 423

Page 731: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Constructori de tip

“Funct,ii” de tip, care genereaza tipuri noi pe bazacelor existente

1 -- Constructorul de tip functie: ->

2 (-> Bool Bool) ⇒ Bool -> Bool3 (-> Bool (Bool -> Bool)) ⇒ Bool -> (Bool -> Bool)4

5 -- Constructorul de tip lista: []

6 ([] Bool) ⇒ [Bool]7 ([] [Bool]) ⇒ [[Bool]]8

9 -- Constructorul de tip tuplu: (,...,)

10 ((,) Bool Char) ⇒ (Bool, Char)11 ((,,) Bool ((,) Char [Bool]) Bool)12 ⇒ (Bool, (Char, [Bool]), Bool)

226 / 423

Page 732: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Tipurile funct,iilor

Constructorul “->” asociativ la dreapta:Integer -> Integer -> Integer

≡ Integer -> (Integer -> Integer)

1 add6 :: Integer -> Integer -> Integer2 add6 x y = x + y

3

4 f :: (Integer -> Integer) -> Integer5 f g = (g 3) + 1

6

7 idd :: a -> a -- functie polimorfica

8 idd x = x -- a: variabila de tip!

227 / 423

Page 733: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Polimorfism

I Parametric: manifestarea aceluias, i comportamentpentru parametri de tipuri diferite. Exemplu: idd

I Ad-hoc: manifestarea unor comportamente diferitepentru parametri de tipuri diferite. Exemplu: (==)

228 / 423

Page 734: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Constructorul de tip Natural IDefinit de utilizator

1 data Natural

2 = Zero

3 | Succ Natural

4 deriving (Show, Eq)5

6 unu = Succ Zero

7 doi = Succ unu

8

9 addNat Zero n = n

10 addNat (Succ m) n = Succ (addNat m n)

229 / 423

Page 735: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Constructorul de tip Natural IIDefinit de utilizator

I Constructor de tip: NaturalI nularI se confunda cu tipul pe care-l construies, te

I Constructori de date:I Zero: nularI Succ: unar

I Constructorii de date ca funct,ii, utilizabileîn pattern matching1 Zero :: Natural

2 Succ :: Natural -> Natural

230 / 423

Page 736: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Constructorul de tip Pair IDefinit de utilizator

1 data Pair a b

2 = P a b

3 deriving (Show, Eq)4

5 pair1 = P 2 True6 pair2 = P 1 pair1

7

8 myFst (P x y) = x

9 mySnd (P x y) = y

231 / 423

Page 737: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Constructorul de tip Pair IIDefinit de utilizator

I Constructor de tip: PairI polimorfic, binar

I genereaza un tip în momentul aplicarii asupra 2 tipuri

I Constructor de date: P, binar

1 P :: a -> b -> Pair a b

232 / 423

Page 738: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Uniformitatea reprezentarii tipurilor

1 data Integer = ... | -2 | -1 | 0 | 1 | 2 | ...

2

3 data Char = ’a’ | ’b’ | ’c’ | ...

4

5 data [a] = [] | a : [a]

6

7 data (a, b) = (a, b)

233 / 423

Page 739: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Evaluare

Tipare

Sinteza de tip

234 / 423

Page 740: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Sinteza de tipI Definit,ie: determinarea automata a tipului

unei expresii, pe baza unor reguli precise

I Adnotarile explicite de tip, des, i posibile, nenecesareîn majoritatea cazurilor

I Dependenta de:

I componentele expresieiI contextul lexical al expresiei

I Reprezentarea tipurilor prin expresii de tip:

I constante de tip: tipuri de baza (Int)I variabile de tip: pot fi legate la orice expresii de tip (a)I aplicat,ii ale constructorilor de tip asupra expresiilor

de tip ([a])

235 / 423

Page 741: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Sinteza de tipI Definit,ie: determinarea automata a tipului

unei expresii, pe baza unor reguli precise

I Adnotarile explicite de tip, des, i posibile, nenecesareîn majoritatea cazurilor

I Dependenta de:

I componentele expresieiI contextul lexical al expresiei

I Reprezentarea tipurilor prin expresii de tip:

I constante de tip: tipuri de baza (Int)I variabile de tip: pot fi legate la orice expresii de tip (a)I aplicat,ii ale constructorilor de tip asupra expresiilor

de tip ([a])

235 / 423

Page 742: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Sinteza de tipI Definit,ie: determinarea automata a tipului

unei expresii, pe baza unor reguli precise

I Adnotarile explicite de tip, des, i posibile, nenecesareîn majoritatea cazurilor

I Dependenta de:

I componentele expresieiI contextul lexical al expresiei

I Reprezentarea tipurilor prin expresii de tip:

I constante de tip: tipuri de baza (Int)I variabile de tip: pot fi legate la orice expresii de tip (a)I aplicat,ii ale constructorilor de tip asupra expresiilor

de tip ([a])

235 / 423

Page 743: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Sinteza de tipI Definit,ie: determinarea automata a tipului

unei expresii, pe baza unor reguli precise

I Adnotarile explicite de tip, des, i posibile, nenecesareîn majoritatea cazurilor

I Dependenta de:I componentele expresiei

I contextul lexical al expresiei

I Reprezentarea tipurilor prin expresii de tip:

I constante de tip: tipuri de baza (Int)I variabile de tip: pot fi legate la orice expresii de tip (a)I aplicat,ii ale constructorilor de tip asupra expresiilor

de tip ([a])

235 / 423

Page 744: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Sinteza de tipI Definit,ie: determinarea automata a tipului

unei expresii, pe baza unor reguli precise

I Adnotarile explicite de tip, des, i posibile, nenecesareîn majoritatea cazurilor

I Dependenta de:I componentele expresieiI contextul lexical al expresiei

I Reprezentarea tipurilor prin expresii de tip:

I constante de tip: tipuri de baza (Int)I variabile de tip: pot fi legate la orice expresii de tip (a)I aplicat,ii ale constructorilor de tip asupra expresiilor

de tip ([a])

235 / 423

Page 745: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Sinteza de tipI Definit,ie: determinarea automata a tipului

unei expresii, pe baza unor reguli precise

I Adnotarile explicite de tip, des, i posibile, nenecesareîn majoritatea cazurilor

I Dependenta de:I componentele expresieiI contextul lexical al expresiei

I Reprezentarea tipurilor prin expresii de tip:

I constante de tip: tipuri de baza (Int)I variabile de tip: pot fi legate la orice expresii de tip (a)I aplicat,ii ale constructorilor de tip asupra expresiilor

de tip ([a])

235 / 423

Page 746: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Sinteza de tipI Definit,ie: determinarea automata a tipului

unei expresii, pe baza unor reguli precise

I Adnotarile explicite de tip, des, i posibile, nenecesareîn majoritatea cazurilor

I Dependenta de:I componentele expresieiI contextul lexical al expresiei

I Reprezentarea tipurilor prin expresii de tip:I constante de tip: tipuri de baza (Int)

I variabile de tip: pot fi legate la orice expresii de tip (a)I aplicat,ii ale constructorilor de tip asupra expresiilor

de tip ([a])

235 / 423

Page 747: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Sinteza de tipI Definit,ie: determinarea automata a tipului

unei expresii, pe baza unor reguli precise

I Adnotarile explicite de tip, des, i posibile, nenecesareîn majoritatea cazurilor

I Dependenta de:I componentele expresieiI contextul lexical al expresiei

I Reprezentarea tipurilor prin expresii de tip:I constante de tip: tipuri de baza (Int)I variabile de tip: pot fi legate la orice expresii de tip (a)

I aplicat,ii ale constructorilor de tip asupra expresiilorde tip ([a])

235 / 423

Page 748: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Sinteza de tipI Definit,ie: determinarea automata a tipului

unei expresii, pe baza unor reguli precise

I Adnotarile explicite de tip, des, i posibile, nenecesareîn majoritatea cazurilor

I Dependenta de:I componentele expresieiI contextul lexical al expresiei

I Reprezentarea tipurilor prin expresii de tip:I constante de tip: tipuri de baza (Int)I variabile de tip: pot fi legate la orice expresii de tip (a)I aplicat,ii ale constructorilor de tip asupra expresiilor

de tip ([a])

235 / 423

Page 749: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Reguli simplificate de sinteza de tip I

I Forma generala:

premisa-1 ... premisa-m

concluzie-1 ... concluzie-n(nume)

I Funct,ie:

Var :: a Expr :: b

\Var -> Expr :: a -> b(TLambda)

I Aplicat,ie:

Expr1 :: a -> b Expr2 :: a

(Expr1 Expr2) :: b(TApp)

236 / 423

Page 750: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Reguli simplificate de sinteza de tip II

I Operatorul +:

Expr1 :: Int Expr2 :: Int

Expr1 + Expr2 :: Int(T+)

I Literali întregi:

0, 1, 2, ... :: Int(TInt)

237 / 423

Page 751: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemple de sinteza de tip I

f g = (g 3) + 1

g :: a (g 3) + 1 :: b

f :: a -> b(TLambda)

(g 3) :: Int 1 :: Int

(g 3) + 1 :: Int(T+, TInt)

b = Int

g :: c -> d 3 :: c

(g 3) :: d(TApp)

a = c -> d, c = Int, d = Int

f :: (Int -> Int) -> Int

238 / 423

Page 752: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemple de sinteza de tip II

fix f = f (fix f)

f :: a f (fix f) :: b

fix :: a -> b(TLambda)

f :: c -> d (fix f) :: c

f (fix f) :: d(TApp)

a = c -> d, b = d

fix :: e -> g f :: e

(fix f) :: g(TApp)

a -> b = e -> g, a = e, b = g, c = g

f :: (c -> d) -> b = (g -> g) -> g

239 / 423

Page 753: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemple de sinteza de tip III

f x = (x x)

x :: a (x x) :: b

f :: a -> b(TLambda)

x :: c -> d x :: c

(x x) :: d(TApp)

Ecuat,ia c -> d = c nu are solut,ie,deci funct,ia nu poate fi tipata.

240 / 423

Page 754: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Unificare I

I Sinteza de tip presupune legarea variabilelor de tipîn scopul unificarii diverselor expresii de tip obt,inute

I Unificare = procesul de identificare a valorilorvariabilelor din 2 sau mai multe expresii, astfel încâtsubstituirea variabilelor prin valorile asociatesa conduca la coincident,a expresiilor

I Substitut,ie = mult,ime de legari variabila-valoare

241 / 423

Page 755: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Unificare II

Exemplu:I Expresii:

I t1 = (a, [b])I t2 = (Int, c)

I Substitut,ii:I S1 = {a ← Int, b ← Int, c ← [Int]}I S2 = {a ← Int, c ← [b]}

I Forme comune:I t1/S1 = t2/S1 = (Int, [Int])I t1/S2 = t2/S2 = (Int, [b])

Most general unifier (MGU) = cea mai generalasubstitut,ie sub care expresiile unifica. Exemplu: S2.

242 / 423

Page 756: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Unificare III

I O variabila de tip, a, unifica cu o expresie de tip, E,doar daca:

I E = a sauI E 6= a s, i E nu cont,ine a (occurrence check).

I 2 constante de tip unifica doar daca sunt egale.

I 2 aplicat,ii de tip unifica doar daca implica acelas, iconstructor de tip s, i argumente ce unifica recursiv.

243 / 423

Page 757: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Tip principal

Exemplu:

I Funct,ie: \x -> x

I Tipuri corecte:I Int -> Int

I Bool -> Bool

I a -> a

I Unele tipuri se obt,in prin instant,ierea altora.

Tip principal al unei expresii = cel mai general tipcare descrie complet natura expresiei. Se obt,ine prinutilizarea MGU.

244 / 423

Page 758: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezumat

I Evaluare lenes, a

I Tipare statica s, i tare, anterioara evaluarii

245 / 423

Page 759: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Bibliografie

Thompson, S. (1999). Haskell: The Craft of FunctionalProgramming. Edit,ia a doua. Addison-Wesley.

246 / 423

Page 760: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Partea VIII

Evaluare lenes, a în Haskell

247 / 423

Page 761: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

248 / 423

Page 762: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Suma patratelor

Suma patratelor numerelor naturale pâna la n,ca suma a elementelor unei liste:

1 sum (map (^2) [1 .. n])

2 → sum (map (^2) 1 : [2 .. n])

3 → sum (1^2 : (map (^2) [2 .. n]))

4 → 1^2 + sum (map (^2) [2 .. n])

5 → 1 + sum (map (^2) [2 .. n])

6 ...

7 → 1 + (4 + sum (map (^2) [3 .. n]))

8 ...

9 → 1 + (4 + (9 + ... + n^2))

Nicio lista nu este efectiv construita în timpul evaluarii.

249 / 423

Page 763: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Suma patratelor

Suma patratelor numerelor naturale pâna la n,ca suma a elementelor unei liste:

1 sum (map (^2) [1 .. n])

2 → sum (map (^2) 1 : [2 .. n])

3 → sum (1^2 : (map (^2) [2 .. n]))

4 → 1^2 + sum (map (^2) [2 .. n])

5 → 1 + sum (map (^2) [2 .. n])

6 ...

7 → 1 + (4 + sum (map (^2) [3 .. n]))

8 ...

9 → 1 + (4 + (9 + ... + n^2))

Nicio lista nu este efectiv construita în timpul evaluarii.

249 / 423

Page 764: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Suma patratelor

Suma patratelor numerelor naturale pâna la n,ca suma a elementelor unei liste:

1 sum (map (^2) [1 .. n])

2 → sum (map (^2) 1 : [2 .. n])

3 → sum (1^2 : (map (^2) [2 .. n]))

4 → 1^2 + sum (map (^2) [2 .. n])

5 → 1 + sum (map (^2) [2 .. n])

6 ...

7 → 1 + (4 + sum (map (^2) [3 .. n]))

8 ...

9 → 1 + (4 + (9 + ... + n^2))

Nicio lista nu este efectiv construita în timpul evaluarii.

249 / 423

Page 765: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Suma patratelor

Suma patratelor numerelor naturale pâna la n,ca suma a elementelor unei liste:

1 sum (map (^2) [1 .. n])

2 → sum (map (^2) 1 : [2 .. n])

3 → sum (1^2 : (map (^2) [2 .. n]))

4 → 1^2 + sum (map (^2) [2 .. n])

5 → 1 + sum (map (^2) [2 .. n])

6 ...

7 → 1 + (4 + sum (map (^2) [3 .. n]))

8 ...

9 → 1 + (4 + (9 + ... + n^2))

Nicio lista nu este efectiv construita în timpul evaluarii.

249 / 423

Page 766: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Suma patratelor

Suma patratelor numerelor naturale pâna la n,ca suma a elementelor unei liste:

1 sum (map (^2) [1 .. n])

2 → sum (map (^2) 1 : [2 .. n])

3 → sum (1^2 : (map (^2) [2 .. n]))

4 → 1^2 + sum (map (^2) [2 .. n])

5 → 1 + sum (map (^2) [2 .. n])

6 ...

7 → 1 + (4 + sum (map (^2) [3 .. n]))

8 ...

9 → 1 + (4 + (9 + ... + n^2))

Nicio lista nu este efectiv construita în timpul evaluarii.

249 / 423

Page 767: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Suma patratelor

Suma patratelor numerelor naturale pâna la n,ca suma a elementelor unei liste:

1 sum (map (^2) [1 .. n])

2 → sum (map (^2) 1 : [2 .. n])

3 → sum (1^2 : (map (^2) [2 .. n]))

4 → 1^2 + sum (map (^2) [2 .. n])

5 → 1 + sum (map (^2) [2 .. n])

6 ...

7 → 1 + (4 + sum (map (^2) [3 .. n]))

8 ...

9 → 1 + (4 + (9 + ... + n^2))

Nicio lista nu este efectiv construita în timpul evaluarii.

249 / 423

Page 768: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Suma patratelor

Suma patratelor numerelor naturale pâna la n,ca suma a elementelor unei liste:

1 sum (map (^2) [1 .. n])

2 → sum (map (^2) 1 : [2 .. n])

3 → sum (1^2 : (map (^2) [2 .. n]))

4 → 1^2 + sum (map (^2) [2 .. n])

5 → 1 + sum (map (^2) [2 .. n])

6 ...

7 → 1 + (4 + sum (map (^2) [3 .. n]))

8 ...

9 → 1 + (4 + (9 + ... + n^2))

Nicio lista nu este efectiv construita în timpul evaluarii.

249 / 423

Page 769: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Suma patratelor

Suma patratelor numerelor naturale pâna la n,ca suma a elementelor unei liste:

1 sum (map (^2) [1 .. n])

2 → sum (map (^2) 1 : [2 .. n])

3 → sum (1^2 : (map (^2) [2 .. n]))

4 → 1^2 + sum (map (^2) [2 .. n])

5 → 1 + sum (map (^2) [2 .. n])

6 ...

7 → 1 + (4 + sum (map (^2) [3 .. n]))

8 ...

9 → 1 + (4 + (9 + ... + n^2))

Nicio lista nu este efectiv construita în timpul evaluarii.

249 / 423

Page 770: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Suma patratelor

Suma patratelor numerelor naturale pâna la n,ca suma a elementelor unei liste:

1 sum (map (^2) [1 .. n])

2 → sum (map (^2) 1 : [2 .. n])

3 → sum (1^2 : (map (^2) [2 .. n]))

4 → 1^2 + sum (map (^2) [2 .. n])

5 → 1 + sum (map (^2) [2 .. n])

6 ...

7 → 1 + (4 + sum (map (^2) [3 .. n]))

8 ...

9 → 1 + (4 + (9 + ... + n^2))

Nicio lista nu este efectiv construita în timpul evaluarii.

249 / 423

Page 771: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Elementul minim al unei liste I

Elementul minim al unei liste, drept prim element alacesteia, dupa sortarea prin insert,ie (Thompson, 1999):

34 ins x [] = [x]

35 ins x (h : t)

36 | x <= h = x : h : t

37 | otherwise = h : (ins x t)

38

39 isort [] = []

40 isort (h : t) = ins h (isort t)

41

42 minList l = head (isort l)

250 / 423

Page 772: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Elementul minim al unei liste II

45 minList [3, 2, 1]

46 = head (isort [3, 2, 1])

47 = head (isort (3 : [2, 1]))

48 = head (ins 3 (isort [2, 1]))

49 = head (ins 3 (isort (2 : [1])))

50 = head (ins 3 (ins 2 (isort [1])))

51 = head (ins 3 (ins 2 (isort (1 : []))))

52 = head (ins 3 (ins 2 (ins 1 (isort []))))

53 = head (ins 3 (ins 2 (ins 1 [])))

54 = head (ins 3 (ins 2 (1 : [])))

55 = head (ins 3 (1 : ins 2 []))

56 = head (1 : (ins 3 (ins 2 [])))

57 = 1

Lista nu este efectiv sortata, minimul fiind, pur s, i simplu,adus în fat,a acesteia s, i întors.

251 / 423

Page 773: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Accesibilitatea într-un graf orientatAccesibilitatea între doua noduri dintr-un graf ⇔ existent,aelementelor în mult,imea tuturor cailor dintre cele douanoduri (Thompson, 1999):75 routes source dest graph explored

76 | source == dest = [[source]]

77 | otherwise = [ source : path

78 | neighbor <- neighbors source

graph \\ explored

79 , path <- routes neighbor dest

graph (source : explored)

80 ]

81

82 accessible source dest graph =

83 (routes source dest graph []) /= []

Backtracking desfas, urat doar pâna la determinareaprimului element al listei de cai.

252 / 423

Page 774: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluarea lenes, a

I Programare orientata spre date: exprimareaunor prelucrari în termenii unor operat,ii pe structuride date, posibil niciodata generate complet (sumapatratelor, sortare)

I Backtracking eficient: gasirea unui obiectcu o anumita proprietate, prin generarea aparentaa tuturor celor care îndeplinesc proprietatearespectiva (accesibilitatea în graf)

I Pilon al modularitat,ii eficiente — prelucrari distincteale unei structuri, aplicate într-o singura parcurgere!

253 / 423

Page 775: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Studiu de caz

Biblioteca de parsare (Thompson, 1999)

254 / 423

Page 776: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Bibliografie

Thompson, S. (1999). Haskell: The Craft of FunctionalProgramming. Edit,ia a doua. Addison-Wesley.

255 / 423

Page 777: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Partea IX

Clase în Haskell

256 / 423

Page 778: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Clase

Aplicat,ie pentru clase

257 / 423

Page 779: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Clase

Aplicat,ie pentru clase

258 / 423

Page 780: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Motivat,ie

Sa se defineasca operat,ia show, capabila sa producareprezentarea oricarui obiect ca s, ir de caractere.Comportamentul este specific fiecarui tip.

1 show 3 → "3"

2 show True → "True"

3 show ’a’ → "’a’"

4 show "a" → "\"a\""

259 / 423

Page 781: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Varianta 1 IFunct,ii dedicate fiecarui tip

1 show4Bool True = "True"

2 show4Bool False = "False"

3

4 show4Char c = "’" ++ [c] ++ "’"

5

6 show4String s = "\"" ++ s ++ "\""

260 / 423

Page 782: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Varianta 1 IIFunct,ii dedicate fiecarui tip

I Funct,ia showNewLine, care adauga caracterul “linienoua” la reprezentarea ca s, ir:1 showNewLine x = (show... x) ++ "\n"

I showNewLine nu poate fi polimorfica→ showNewLine4Bool, showNewLine4Char etc.

I Alternativ, trimiterea ca parametru a funct,iei show*,corespunzatoare:1 showNewLine sh x = (sh x) ++ "\n"

2 showNewLine4Bool = showNewLine show4Bool

I Prea general, fiind posibila trimiterea unei funct,iicu alt comportament, în masura în care respecta tipul

261 / 423

Page 783: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Varianta 2 ISupraîncarcarea funct,iei

I Definirea mult,imii Show, a tipurilor care expun show:1 class Show a where2 show :: a -> String3 ...

I Precizarea aderent,ei unui tip la aceasta mult,ime:1 instance Show Bool where2 show True = "True"

3 show False = "False"

4

5 instance Show Char where6 show c = "’" ++ [c] ++ "’"

I Funct,ia showNewLine polimorfica!1 showNewLine x = (show x) ++ "\n"

262 / 423

Page 784: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Varianta 2 IISupraîncarcarea funct,iei

I Ce tip au funct,iile show, respectiv showNewLine?1 show :: Show a => a -> String2 showNewLine :: Show a => a -> String

I “Daca tipul a este membru al clasei Show, i.e. funct,iashow este definita pe valorile tipului a, atunci funct,iileau tipul a -> String.”

I Context: constrângeri suplimentare asupravariabilelor din tipul funct,iei: Show a

I Propagarea constrângerilor din contextul lui showcatre contextul lui showNewLine

263 / 423

Page 785: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Varianta 2 IIISupraîncarcarea funct,iei

I Contexte utilizabile s, i la instant,iere:

1 instance (Show a, Show b) => Show (a, b) where2 show (x, y) = "(" ++ (show x)

3 ++ ", " ++ (show y)

4 ++ ")"

I “Ori de câte ori tipurile a s, i b apart,in clasei Show,tipul (a, b) îi apart,ine de asemenea.”

264 / 423

Page 786: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Clase

I Clasa = mult,ime de tipuri ce supraîncarca operat,iilespecifice clasei

I Modalitate structurata de control al polimorfismuluiad-hoc

I Exemplu: clasa Show, cu operat,ia show

265 / 423

Page 787: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Instant,e ale claselor

I Instant,a = tip care supraîncarca operat,iile clasei

I Exemplu: tipul Bool, în raport cu clasa Show

266 / 423

Page 788: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Clase predefinite I

1 class Show a where2 show :: a -> String3 ...

4

5 class Eq a where6 (==), (/=) :: a -> a -> Bool7 x /= y = not (x == y)

8 x == y = not (x /= y)

I Posibilitatea scrierii de definit,ii implicite (v. liniile 7–8)

I Necesitatea suprascrierii cel put,in unuia dintre cei doioperatori ai clasei Eq, pentru instant,ierea corecta

267 / 423

Page 789: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Clase predefinite II

1 class Eq a => Ord a where2 (<), (<=), (>=), (>) :: a -> a -> Bool3 ...

I Contexte utilzabile s, i la definirea unei clase

I Mos, tenirea claselor, cu preluarea operat,iilor din clasamos, tenita

I Necesitatea aderent,ei la clasa Eq în momentulinstant,ierii clasei Ord

I Suficient,a supradefinirii lui (<=) la instant,iere

268 / 423

Page 790: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Clase Haskell vs. POO

Haskell

I Mult,imi de tipuri

I Instant,ierea claselorde catre tipuri

I Implementarea operat,iilorîn afara definit,iei tipului

POO

I Mult,imi de obiecte: tipuri

I Implementarea interfet,elorde catre clase

I Implementarea operat,iilorîn cadrul definit,iei tipului

Clase Haskell ~ Interfet,e Java

269 / 423

Page 791: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Clase Haskell vs. POO

Haskell

I Mult,imi de tipuri

I Instant,ierea claselorde catre tipuri

I Implementarea operat,iilorîn afara definit,iei tipului

POO

I Mult,imi de obiecte: tipuri

I Implementarea interfet,elorde catre clase

I Implementarea operat,iilorîn cadrul definit,iei tipului

Clase Haskell ~ Interfet,e Java

269 / 423

Page 792: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Clase Haskell vs. POO

Haskell

I Mult,imi de tipuri

I Instant,ierea claselorde catre tipuri

I Implementarea operat,iilorîn afara definit,iei tipului

POO

I Mult,imi de obiecte: tipuri

I Implementarea interfet,elorde catre clase

I Implementarea operat,iilorîn cadrul definit,iei tipului

Clase Haskell ~ Interfet,e Java

269 / 423

Page 793: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Clase Haskell vs. POO

Haskell

I Mult,imi de tipuri

I Instant,ierea claselorde catre tipuri

I Implementarea operat,iilorîn afara definit,iei tipului

POO

I Mult,imi de obiecte: tipuri

I Implementarea interfet,elorde catre clase

I Implementarea operat,iilorîn cadrul definit,iei tipului

Clase Haskell ~ Interfet,e Java

269 / 423

Page 794: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Clase

Aplicat,ie pentru clase

270 / 423

Page 795: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

invert I

Fie constructorii de tip:

3 data Pair a = P a a

4

5 data NestedList a

6 = Atom a

7 | List [NestedList a]

Sa se defineasca operat,ia invert, aplicabila pe obiectede tipuri diferite, inclusiv Pair a s, i NestedList a,comportamentul fiind specific fiecarui tip.

271 / 423

Page 796: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

invert II

5 class Invert a where6 invert :: a -> a

7 invert = id8

9 instance Invert (Pair a) where10 invert (P x y) = P y x

11

12 instance Invert a => Invert (NestedList a) where13 invert (Atom x) = Atom (invert x)

14 invert (List x) = List $ reverse $ map invert x

15

16 instance Invert a => Invert [a] where17 invert lst = reverse $ map invert lst

Necesitatea contextului, în cazul tipurilor [a]s, i NestedList a, pentru inversarea elementelor înselor

272 / 423

Page 797: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

contents I

Sa se defineasca operat,ia contents, aplicabilape obiecte structurate, inclusiv pe cele apart,inând tipurilorPair a s, i NestedList a, care întoarce elementele,sub forma unei liste.

1 class Container a where2 contents :: a -> [??]

I a este tipul unui container, ca NestedList b

I Elementele listei întoarse sunt cele din container

I Cum precizam tipul acestora, b?

273 / 423

Page 798: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

contents II

1 class Container a where2 contents :: a -> [a]

3

4 instance Container [a] where5 contents = id

I Conform definit,iei clasei:1 contents :: Container [a] => [a] -> [[a]]

I Conform supraîncarcarii funct,iei (id):1 contents :: Container [a] => [a] -> [a]

I Ecuat,ia [a] = [[a]] nu are solut,ie — eroare!

274 / 423

Page 799: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

contents III1 class Container a where2 contents :: a -> [b]

3

4 instance Container [a] where5 contents = id

I Conform definit,iei clasei:1 contents :: Container [a] => [a] -> [b]

I Conform supraîncarcarii funct,iei (id):1 contents :: Container [a] => [a] -> [a]

I Ecuat,ia [a] = [b] are solut,ie pentru a = b

I Dar, [a] -> [a] insuficient de general în raportcu [a] -> [b] — eroare!

275 / 423

Page 800: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

contents IV

Solut,ie: clasa primes, te constructorul de tip,s, i nu tipul container propriu-zis

5 class Container t where6 contents :: t a -> [a]

7

8 instance Container Pair where -- nu (Pair a)!

9 contents (P x y) = [x, y]

10

11 instance Container NestedList where12 contents (Atom x) = [x]

13 contents (List l) = concatMap contents l

14

15 instance Container [] where16 contents = id

276 / 423

Page 801: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Contexte I6 fun1 :: Eq a => a -> a -> a -> a

7 fun1 x y z = if x == y then x else z

8

9 fun2 :: (Container a, Invert (a b), Eq (a b))

10 => (a b) -> (a b) -> [b]

11 fun2 x y = if (invert x) == (invert y)

12 then contents x

13 else contents y

14

15 fun3 :: Invert a => [a] -> [a] -> [a]

16 fun3 x y = (invert x) ++ (invert y)

17

18 fun4 :: Ord a => a -> a -> a -> a

19 fun4 x y z = if x == y

20 then z

21 else if x > y

22 then x

23 else y

277 / 423

Page 802: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Contexte II

I Simplificarea contextului lui fun3, de la Invert [a]

la Invert a

I Simplificarea contextului lui fun4, de la(Eq a, Ord a) la Ord a, din moment ce clasa Ord

este derivata din clasa Eq

278 / 423

Page 803: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

RezumatI Clase = mult,imi de tipuri care supraîncarca

anumite operat,ii

I Forma de polimorfism ad-hoc: tipuri diferite,comportamente diferite

I Instant,ierea unei clase = aderarea unui tip la o clasa

I Derivarea unei clase = impunerea condit,iei ca un tipsa fie deja membru al clasei parinte, în momentulinstant,ierii clasei copil, s, i mos, tenirea operat,iilordin clasa parinte

I Context = mult,imea constrângerilor asupra tipurilordin signatura unei funct,ii, în termenii aderent,eila diverse clase

279 / 423

Page 804: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Partea X

Paradigma funct,ionalavs. paradigma imperativa

280 / 423

Page 805: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Efecte laterale s, i transparent,a referent,iala

Aspecte comparative

Aplicat,ii ale programarii funct,ionale

281 / 423

Page 806: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Efecte laterale s, i transparent,a referent,iala

Aspecte comparative

Aplicat,ii ale programarii funct,ionale

282 / 423

Page 807: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Efecte laterale (side effects)Definit,ie

I În expresia 2 + (i = 3), subexpresia (i = 3):

I produce valoarea 3, conducând la rezultatul 5pentru întreaga expresie

I are efectul lateral de init,ializare a lui i cu 3

I Inerente în situat,iile în care programulinteract,ioneaza cu exteriorul — I/O!

283 / 423

Page 808: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Efecte laterale (side effects)Definit,ie

I În expresia 2 + (i = 3), subexpresia (i = 3):I produce valoarea 3, conducând la rezultatul 5

pentru întreaga expresie

I are efectul lateral de init,ializare a lui i cu 3

I Inerente în situat,iile în care programulinteract,ioneaza cu exteriorul — I/O!

283 / 423

Page 809: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Efecte laterale (side effects)Definit,ie

I În expresia 2 + (i = 3), subexpresia (i = 3):I produce valoarea 3, conducând la rezultatul 5

pentru întreaga expresieI are efectul lateral de init,ializare a lui i cu 3

I Inerente în situat,iile în care programulinteract,ioneaza cu exteriorul — I/O!

283 / 423

Page 810: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Efecte laterale (side effects)Definit,ie

I În expresia 2 + (i = 3), subexpresia (i = 3):I produce valoarea 3, conducând la rezultatul 5

pentru întreaga expresieI are efectul lateral de init,ializare a lui i cu 3

I Inerente în situat,iile în care programulinteract,ioneaza cu exteriorul — I/O!

283 / 423

Page 811: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Efecte laterale (side effects)Consecint,e

I În expresia x-- + ++x, cu x = 0:

I evaluarea stânga-dreapta produce 0 + 0 = 0

I evaluarea dreapta-stânga produce 1 + 1 = 2

I daca înlocuim cele doua subexpresiicu valorile pe care le reprezinta, obt,inemx + (x + 1) = 0 + 1 = 1

I Adunare necomutativa?!

I Important,a ordinii de evaluare!

I Dependent,e implicite, dificil de desprins s, i posibilegeneratoare de bug-uri

284 / 423

Page 812: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Efecte laterale (side effects)Consecint,e

I În expresia x-- + ++x, cu x = 0:I evaluarea stânga-dreapta produce 0 + 0 = 0

I evaluarea dreapta-stânga produce 1 + 1 = 2

I daca înlocuim cele doua subexpresiicu valorile pe care le reprezinta, obt,inemx + (x + 1) = 0 + 1 = 1

I Adunare necomutativa?!

I Important,a ordinii de evaluare!

I Dependent,e implicite, dificil de desprins s, i posibilegeneratoare de bug-uri

284 / 423

Page 813: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Efecte laterale (side effects)Consecint,e

I În expresia x-- + ++x, cu x = 0:I evaluarea stânga-dreapta produce 0 + 0 = 0

I evaluarea dreapta-stânga produce 1 + 1 = 2

I daca înlocuim cele doua subexpresiicu valorile pe care le reprezinta, obt,inemx + (x + 1) = 0 + 1 = 1

I Adunare necomutativa?!

I Important,a ordinii de evaluare!

I Dependent,e implicite, dificil de desprins s, i posibilegeneratoare de bug-uri

284 / 423

Page 814: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Efecte laterale (side effects)Consecint,e

I În expresia x-- + ++x, cu x = 0:I evaluarea stânga-dreapta produce 0 + 0 = 0

I evaluarea dreapta-stânga produce 1 + 1 = 2

I daca înlocuim cele doua subexpresiicu valorile pe care le reprezinta, obt,inemx + (x + 1) = 0 + 1 = 1

I Adunare necomutativa?!

I Important,a ordinii de evaluare!

I Dependent,e implicite, dificil de desprins s, i posibilegeneratoare de bug-uri

284 / 423

Page 815: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Efecte laterale (side effects)Consecint,e

I În expresia x-- + ++x, cu x = 0:I evaluarea stânga-dreapta produce 0 + 0 = 0

I evaluarea dreapta-stânga produce 1 + 1 = 2

I daca înlocuim cele doua subexpresiicu valorile pe care le reprezinta, obt,inemx + (x + 1) = 0 + 1 = 1

I Adunare necomutativa?!

I Important,a ordinii de evaluare!

I Dependent,e implicite, dificil de desprins s, i posibilegeneratoare de bug-uri

284 / 423

Page 816: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Efecte laterale (side effects)Consecint,e

I În expresia x-- + ++x, cu x = 0:I evaluarea stânga-dreapta produce 0 + 0 = 0

I evaluarea dreapta-stânga produce 1 + 1 = 2

I daca înlocuim cele doua subexpresiicu valorile pe care le reprezinta, obt,inemx + (x + 1) = 0 + 1 = 1

I Adunare necomutativa?!

I Important,a ordinii de evaluare!

I Dependent,e implicite, dificil de desprins s, i posibilegeneratoare de bug-uri

284 / 423

Page 817: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Efecte laterale (side effects)Consecint,e

I În expresia x-- + ++x, cu x = 0:I evaluarea stânga-dreapta produce 0 + 0 = 0

I evaluarea dreapta-stânga produce 1 + 1 = 2

I daca înlocuim cele doua subexpresiicu valorile pe care le reprezinta, obt,inemx + (x + 1) = 0 + 1 = 1

I Adunare necomutativa?!

I Important,a ordinii de evaluare!

I Dependent,e implicite, dificil de desprins s, i posibilegeneratoare de bug-uri

284 / 423

Page 818: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transparent,a referent,iala

I Zeus la greci ≡ Jupiter la romani (Wooldridge s, i Jennings, 1995)

1. Cazul 1:

I “Zeus este fiul lui Cronos”

I “Jupiter este fiul lui Cronos”

I aceeas, i semnificat,ie

2. Cazul 2:

I “Ionel s, tie ca Zeus este fiul lui Cronos”

I “Ionel s, tie ca Jupiter este fiul lui Cronos”

I alta semnificat,ie

I Transparent,a referent,iala = independent,a înt,elesuluiunei propozit,ii în raport cu modul de desemnarea obiectelor — cazul 1.

285 / 423

Page 819: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transparent,a referent,iala

I Zeus la greci ≡ Jupiter la romani (Wooldridge s, i Jennings, 1995)

1. Cazul 1:

I “Zeus este fiul lui Cronos”

I “Jupiter este fiul lui Cronos”

I aceeas, i semnificat,ie

2. Cazul 2:

I “Ionel s, tie ca Zeus este fiul lui Cronos”

I “Ionel s, tie ca Jupiter este fiul lui Cronos”

I alta semnificat,ie

I Transparent,a referent,iala = independent,a înt,elesuluiunei propozit,ii în raport cu modul de desemnarea obiectelor — cazul 1.

285 / 423

Page 820: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transparent,a referent,iala

I Zeus la greci ≡ Jupiter la romani (Wooldridge s, i Jennings, 1995)

1. Cazul 1:I “Zeus este fiul lui Cronos”

I “Jupiter este fiul lui Cronos”

I aceeas, i semnificat,ie

2. Cazul 2:

I “Ionel s, tie ca Zeus este fiul lui Cronos”

I “Ionel s, tie ca Jupiter este fiul lui Cronos”

I alta semnificat,ie

I Transparent,a referent,iala = independent,a înt,elesuluiunei propozit,ii în raport cu modul de desemnarea obiectelor — cazul 1.

285 / 423

Page 821: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transparent,a referent,iala

I Zeus la greci ≡ Jupiter la romani (Wooldridge s, i Jennings, 1995)

1. Cazul 1:I “Zeus este fiul lui Cronos”

I “Jupiter este fiul lui Cronos”

I aceeas, i semnificat,ie

2. Cazul 2:

I “Ionel s, tie ca Zeus este fiul lui Cronos”

I “Ionel s, tie ca Jupiter este fiul lui Cronos”

I alta semnificat,ie

I Transparent,a referent,iala = independent,a înt,elesuluiunei propozit,ii în raport cu modul de desemnarea obiectelor — cazul 1.

285 / 423

Page 822: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transparent,a referent,iala

I Zeus la greci ≡ Jupiter la romani (Wooldridge s, i Jennings, 1995)

1. Cazul 1:I “Zeus este fiul lui Cronos”

I “Jupiter este fiul lui Cronos”

I aceeas, i semnificat,ie

2. Cazul 2:

I “Ionel s, tie ca Zeus este fiul lui Cronos”

I “Ionel s, tie ca Jupiter este fiul lui Cronos”

I alta semnificat,ie

I Transparent,a referent,iala = independent,a înt,elesuluiunei propozit,ii în raport cu modul de desemnarea obiectelor — cazul 1.

285 / 423

Page 823: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transparent,a referent,iala

I Zeus la greci ≡ Jupiter la romani (Wooldridge s, i Jennings, 1995)

1. Cazul 1:I “Zeus este fiul lui Cronos”

I “Jupiter este fiul lui Cronos”

I aceeas, i semnificat,ie

2. Cazul 2:

I “Ionel s, tie ca Zeus este fiul lui Cronos”

I “Ionel s, tie ca Jupiter este fiul lui Cronos”

I alta semnificat,ie

I Transparent,a referent,iala = independent,a înt,elesuluiunei propozit,ii în raport cu modul de desemnarea obiectelor — cazul 1.

285 / 423

Page 824: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transparent,a referent,iala

I Zeus la greci ≡ Jupiter la romani (Wooldridge s, i Jennings, 1995)

1. Cazul 1:I “Zeus este fiul lui Cronos”

I “Jupiter este fiul lui Cronos”

I aceeas, i semnificat,ie

2. Cazul 2:

I “Ionel s, tie ca Zeus este fiul lui Cronos”

I “Ionel s, tie ca Jupiter este fiul lui Cronos”

I alta semnificat,ie

I Transparent,a referent,iala = independent,a înt,elesuluiunei propozit,ii în raport cu modul de desemnarea obiectelor — cazul 1.

285 / 423

Page 825: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transparent,a referent,iala

I Zeus la greci ≡ Jupiter la romani (Wooldridge s, i Jennings, 1995)

1. Cazul 1:I “Zeus este fiul lui Cronos”

I “Jupiter este fiul lui Cronos”

I aceeas, i semnificat,ie

2. Cazul 2:I “Ionel s, tie ca Zeus este fiul lui Cronos”

I “Ionel s, tie ca Jupiter este fiul lui Cronos”

I alta semnificat,ie

I Transparent,a referent,iala = independent,a înt,elesuluiunei propozit,ii în raport cu modul de desemnarea obiectelor — cazul 1.

285 / 423

Page 826: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transparent,a referent,iala

I Zeus la greci ≡ Jupiter la romani (Wooldridge s, i Jennings, 1995)

1. Cazul 1:I “Zeus este fiul lui Cronos”

I “Jupiter este fiul lui Cronos”

I aceeas, i semnificat,ie

2. Cazul 2:I “Ionel s, tie ca Zeus este fiul lui Cronos”

I “Ionel s, tie ca Jupiter este fiul lui Cronos”

I alta semnificat,ie

I Transparent,a referent,iala = independent,a înt,elesuluiunei propozit,ii în raport cu modul de desemnarea obiectelor — cazul 1.

285 / 423

Page 827: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transparent,a referent,iala

I Zeus la greci ≡ Jupiter la romani (Wooldridge s, i Jennings, 1995)

1. Cazul 1:I “Zeus este fiul lui Cronos”

I “Jupiter este fiul lui Cronos”

I aceeas, i semnificat,ie

2. Cazul 2:I “Ionel s, tie ca Zeus este fiul lui Cronos”

I “Ionel s, tie ca Jupiter este fiul lui Cronos”

I alta semnificat,ie

I Transparent,a referent,iala = independent,a înt,elesuluiunei propozit,ii în raport cu modul de desemnarea obiectelor — cazul 1.

285 / 423

Page 828: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transparent,a referent,iala

I Zeus la greci ≡ Jupiter la romani (Wooldridge s, i Jennings, 1995)

1. Cazul 1:I “Zeus este fiul lui Cronos”

I “Jupiter este fiul lui Cronos”

I aceeas, i semnificat,ie

2. Cazul 2:I “Ionel s, tie ca Zeus este fiul lui Cronos”

I “Ionel s, tie ca Jupiter este fiul lui Cronos”

I alta semnificat,ie

I Transparent,a referent,iala = independent,a înt,elesuluiunei propozit,ii în raport cu modul de desemnarea obiectelor — cazul 1.

285 / 423

Page 829: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transparent,a referent,iala

I Zeus la greci ≡ Jupiter la romani (Wooldridge s, i Jennings, 1995)

1. Cazul 1:I “Zeus este fiul lui Cronos”

I “Jupiter este fiul lui Cronos”

I aceeas, i semnificat,ie

2. Cazul 2:I “Ionel s, tie ca Zeus este fiul lui Cronos”

I “Ionel s, tie ca Jupiter este fiul lui Cronos”

I alta semnificat,ie

I Transparent,a referent,iala = independent,a înt,elesuluiunei propozit,ii în raport cu modul de desemnarea obiectelor — cazul 1.

285 / 423

Page 830: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Expresii transparente referent,ial

One of the most useful properties of expressions is[. . . ] referential transparency. In essence this meansthat if we wish to find the value of an expressionwhich contains a sub-expression, the only thing weneed to know about the sub-expression is its value.Any other features of the sub-expression, such as itsinternal structure, the number and nature of itscomponents, the order in which they are evaluatedor the colour of the ink in which they are written, areirrelevant to the value of the main expression.

Christopher Strachey,Fundamental Concepts in Programming Languages

286 / 423

Page 831: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Expresii transparente referent,ial

The only thing that matters about an expression is itsvalue, and any subexpression can be replaced byany other equal in value. Moreover, the value of anexpression is, within certain limits, the samewhenever it occurs.

Joseph Stoy,Denotational semantics: the Scott-Stracheyapproach to programming language theory

287 / 423

Page 832: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Expresii transparente referent,ial

I Expresii (ne)transparente referent,ial:

I x-- + ++x

: nu, valoarea depinde de ordineade evaluare

I x = x + 1

: nu, doua evaluari consecutivevor produce rezultate diferite

I x

: da, presupunând ca x nu este modificataîn alta parte

I Efecte laterale ⇒ opacitate referent,iala!

288 / 423

Page 833: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Expresii transparente referent,ial

I Expresii (ne)transparente referent,ial:I x-- + ++x

: nu, valoarea depinde de ordineade evaluare

I x = x + 1

: nu, doua evaluari consecutivevor produce rezultate diferite

I x

: da, presupunând ca x nu este modificataîn alta parte

I Efecte laterale ⇒ opacitate referent,iala!

288 / 423

Page 834: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Expresii transparente referent,ial

I Expresii (ne)transparente referent,ial:I x-- + ++x : nu, valoarea depinde de ordinea

de evaluare

I x = x + 1

: nu, doua evaluari consecutivevor produce rezultate diferite

I x

: da, presupunând ca x nu este modificataîn alta parte

I Efecte laterale ⇒ opacitate referent,iala!

288 / 423

Page 835: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Expresii transparente referent,ial

I Expresii (ne)transparente referent,ial:I x-- + ++x : nu, valoarea depinde de ordinea

de evaluareI x = x + 1

: nu, doua evaluari consecutivevor produce rezultate diferite

I x

: da, presupunând ca x nu este modificataîn alta parte

I Efecte laterale ⇒ opacitate referent,iala!

288 / 423

Page 836: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Expresii transparente referent,ial

I Expresii (ne)transparente referent,ial:I x-- + ++x : nu, valoarea depinde de ordinea

de evaluareI x = x + 1 : nu, doua evaluari consecutive

vor produce rezultate diferite

I x

: da, presupunând ca x nu este modificataîn alta parte

I Efecte laterale ⇒ opacitate referent,iala!

288 / 423

Page 837: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Expresii transparente referent,ial

I Expresii (ne)transparente referent,ial:I x-- + ++x : nu, valoarea depinde de ordinea

de evaluareI x = x + 1 : nu, doua evaluari consecutive

vor produce rezultate diferiteI x

: da, presupunând ca x nu este modificataîn alta parte

I Efecte laterale ⇒ opacitate referent,iala!

288 / 423

Page 838: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Expresii transparente referent,ial

I Expresii (ne)transparente referent,ial:I x-- + ++x : nu, valoarea depinde de ordinea

de evaluareI x = x + 1 : nu, doua evaluari consecutive

vor produce rezultate diferiteI x : da, presupunând ca x nu este modificata

în alta parte

I Efecte laterale ⇒ opacitate referent,iala!

288 / 423

Page 839: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Expresii transparente referent,ial

I Expresii (ne)transparente referent,ial:I x-- + ++x : nu, valoarea depinde de ordinea

de evaluareI x = x + 1 : nu, doua evaluari consecutive

vor produce rezultate diferiteI x : da, presupunând ca x nu este modificata

în alta parte

I Efecte laterale ⇒ opacitate referent,iala!

288 / 423

Page 840: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii transparente referent,ial

Funct,ie transparenta referent,ial:rezultatul întors depinde exclusiv de parametri

1 int transparent(int x) {

2 return x + 1;

3 }

5 int g = 0;

6

7 int opaque(int x) {

8 return x + ++g;

9 }

10

11 // opaque(3) != opaque(3)

I Funct,ii transparente: log, sin etc.I Funct,ii opace: time, read etc.

289 / 423

Page 841: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii transparente referent,ial

Funct,ie transparenta referent,ial:rezultatul întors depinde exclusiv de parametri

1 int transparent(int x) {

2 return x + 1;

3 }

5 int g = 0;

6

7 int opaque(int x) {

8 return x + ++g;

9 }

10

11 // opaque(3) != opaque(3)

I Funct,ii transparente: log, sin etc.I Funct,ii opace: time, read etc.

289 / 423

Page 842: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Înlant,uirea funct,iilor

outf5

f3

f1in1

f2in2

f4in3

290 / 423

Page 843: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Calcul fara stare

Dependent,a ies, irii de intrare, nu s, i de timp

x

f

t0

y

291 / 423

Page 844: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Calcul fara stare

Dependent,a ies, irii de intrare, nu s, i de timp

x f

t1

y

291 / 423

Page 845: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Calcul fara stare

Dependent,a ies, irii de intrare, nu s, i de timp

x f

t2

y

291 / 423

Page 846: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Calcul cu stare

Dependent,a ies, irii de intrare, s, i de timp

x

f

t0

y ′ 6= y

292 / 423

Page 847: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Calcul cu stare

Dependent,a ies, irii de intrare, s, i de timp

x f

t1

y

′ 6= y

292 / 423

Page 848: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Calcul cu stare

Dependent,a ies, irii de intrare, s, i de timp

x f

t2

y ′ 6= y

292 / 423

Page 849: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Calcul cu stare

outf5

f3

f1in1

f2in2

f4in3

Stare = mult,imea valorilor variabilelor, la un anumitmoment, ce pot influent,a rezultatul evaluarii aceleias, iexpresii.

293 / 423

Page 850: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Calcul cu stare

outf5

f3

f1in1

f2in2

f4in3

stare

Stare = mult,imea valorilor variabilelor, la un anumitmoment, ce pot influent,a rezultatul evaluarii aceleias, iexpresii.

293 / 423

Page 851: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Avantajele transparent,ei referent,iale

I Lizibilitatea codului

I Demonstrarea formala a corectitudinii programului

I Optimizare prin reordonarea instruct,iunilorde catre compilator, s, i prin caching

I Paralelizare masiva, în urma eliminarii modificarilorconcurente

I Evaluare lenes, a, imposibila în absent,a unei garant,iidespre ment,inerea valorii unei expresii, la momentediferite!

294 / 423

Page 852: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Avantajele transparent,ei referent,iale

I Lizibilitatea codului

I Demonstrarea formala a corectitudinii programului

I Optimizare prin reordonarea instruct,iunilorde catre compilator, s, i prin caching

I Paralelizare masiva, în urma eliminarii modificarilorconcurente

I Evaluare lenes, a, imposibila în absent,a unei garant,iidespre ment,inerea valorii unei expresii, la momentediferite!

294 / 423

Page 853: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Avantajele transparent,ei referent,iale

I Lizibilitatea codului

I Demonstrarea formala a corectitudinii programului

I Optimizare prin reordonarea instruct,iunilorde catre compilator, s, i prin caching

I Paralelizare masiva, în urma eliminarii modificarilorconcurente

I Evaluare lenes, a, imposibila în absent,a unei garant,iidespre ment,inerea valorii unei expresii, la momentediferite!

294 / 423

Page 854: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Avantajele transparent,ei referent,iale

I Lizibilitatea codului

I Demonstrarea formala a corectitudinii programului

I Optimizare prin reordonarea instruct,iunilorde catre compilator, s, i prin caching

I Paralelizare masiva, în urma eliminarii modificarilorconcurente

I Evaluare lenes, a, imposibila în absent,a unei garant,iidespre ment,inerea valorii unei expresii, la momentediferite!

294 / 423

Page 855: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Avantajele transparent,ei referent,iale

I Lizibilitatea codului

I Demonstrarea formala a corectitudinii programului

I Optimizare prin reordonarea instruct,iunilorde catre compilator, s, i prin caching

I Paralelizare masiva, în urma eliminarii modificarilorconcurente

I Evaluare lenes, a, imposibila în absent,a unei garant,iidespre ment,inerea valorii unei expresii, la momentediferite!

294 / 423

Page 856: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Efecte laterale s, i transparent,a referent,iala

Aspecte comparative

Aplicat,ii ale programarii funct,ionale

295 / 423

Page 857: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Explicitarea sensului programelor

1: procedure MINLIST(L,n)2: min← L[1]

3: i ← 24: while i ≤ n do5: if L[i ] < min then6: min← L[i ]7: end if8: i ← i + 19: end while

10: return min11: end procedure

1 minList [h] = h

2 minList (h : t) = min h $ minList t

296 / 423

Page 858: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Verificarea programelor

Funct,ional

I Definit,ia unei funct,ii =proprietate pe care oîndeplines, te

I Aplicabilitatea directa ametodelor, e.g induct,iestructurala

Imperativ

I Necesitatea adnotariiprogramelor cudescriptori de stare

I Necesitatea aplicarii demetode indirecte, bazatepe adnotari

297 / 423

Page 859: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Funct,ii s, i variabile

Funct,ional

I Funct,ii cu aceleas, i valoripentru aceias, i parametri

I Variabile nemodificabile

Imperativ

I Funct,ii cu valori diferitepentru aceias, i parametri

I Variabile modificabile

298 / 423

Page 860: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluare lenes, a

I Posibila doar în absent,a efectelor laterale

I Modularitate eficienta,separat,ie producator-consumator

I Fluxuri

299 / 423

Page 861: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Problema expresivitat,ii

Extinderea tipurilor Extinderea operat,iilorFunct,ional Dificila Us, oaraOO Us, oara Dificila

300 / 423

Page 862: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Alte aspecte

I Funct,ionale ca structuri de control

I Tipuri algebrice

I Polimorfism

301 / 423

Page 863: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Efecte laterale s, i transparent,a referent,iala

Aspecte comparative

Aplicat,ii ale programarii funct,ionale

302 / 423

Page 864: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aplicat,ii ale programarii funct,ionale I

I PureScript, translator Haskell → JavaScript:(http://www.purescript.org/)

I Yesod Web Framework for Haskell(http://www.yesodweb.com/)

I Back-end Haskell pentru Android(https://wiki.haskell.org/Android)

I Yampa, EDSL în Haskellpentru Functional Reactive Programming (FRP)(https://wiki.haskell.org/Yampa)

303 / 423

Page 865: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aplicat,ii ale programarii funct,ionale II

I Programare paralela(http://chimera.labs.oreilly.com/books/1230000000929)

I Utilizare Haskell la Google s, i Facebook:(https://code.facebook.com/posts/745068642270222/fighting-spam-with-haskell/)

I Construct,ii lambda s, i funct,ionale, introduseîn C++, Java 8, Swift(https://developer.apple.com/swift/)

304 / 423

Page 866: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Bibliografie

Thompson, S. (2011). Haskell: The Craft of FunctionalProgramming. Edit,ia a treia. Addison-Wesley.

Wooldridge, M. s, i Jennings, N. R. (1995). IntelligentAgents: Theory and Practice. Knowledge EngineeringReview, 10:115–152.

305 / 423

Page 867: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Partea XI

Limbajul Prolog

306 / 423

Page 868: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Axiome s, i reguli

Procesul de demonstrare

Controlul execut,iei

Caracteristici

307 / 423

Page 869: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Axiome s, i reguli

Procesul de demonstrare

Controlul execut,iei

Caracteristici

308 / 423

Page 870: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Un prim exemplu

1 % constante -> litera mica

2 parent(andrei, bogdan).

3 parent(andrei, bianca).

4 parent(bogdan, cristi).

5

6 % variabile -> litera mare

7 grandparent(X, Y) :- parent(X, Z), parent(Z, Y).

I

true⇒

parent(andrei ,bogdan)

I

true⇒

parent(andrei ,bianca)

I

true⇒

parent(bogdan,cristi)I ∀x .∀y .∀z.

(parent(x ,z)∧parent(z,y)⇒ grandparent(x ,y))

309 / 423

Page 871: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Un prim exemplu

1 % constante -> litera mica

2 parent(andrei, bogdan).

3 parent(andrei, bianca).

4 parent(bogdan, cristi).

5

6 % variabile -> litera mare

7 grandparent(X, Y) :- parent(X, Z), parent(Z, Y).

I true⇒ parent(andrei ,bogdan)

I true⇒ parent(andrei ,bianca)

I true⇒ parent(bogdan,cristi)I ∀x .∀y .∀z.

(parent(x ,z)∧parent(z,y)⇒ grandparent(x ,y))

309 / 423

Page 872: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Interogari1 ?- parent(andrei, bogdan).

2 true .

3

4 ?- parent(andrei, cristi).

5 false.

6

7 ?- parent(andrei, X).

8 X = bogdan ;

9 X = bianca.

10

11 ?- grandparent(X, Y).

12 X = andrei,

13 Y = cristi ;

14 false.

I “.” → oprire dupa primul raspuns

I “;” → solicitarea urmatorului raspuns

310 / 423

Page 873: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Concatenarea a doua liste

1 % append(L1, L2, Res)

2 append([], L, L).

3 append([H|T], L, [H|Res]) :- append(T, L, Res).

Calcul1 ?- append([1], [2], Res).

2 Res = [1, 2].

Generare1 ?- append(L1, L2, [1, 2]).

2 L1 = [],

3 L2 = [1, 2] ;

4 L1 = [1],

5 L2 = [2] ;

6 L1 = [1, 2],

7 L2 = [] ;

8 false.

Estomparea granit,elor dintre “intrare” s, i “ies, ire”

311 / 423

Page 874: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Concatenarea a doua liste

1 % append(L1, L2, Res)

2 append([], L, L).

3 append([H|T], L, [H|Res]) :- append(T, L, Res).

Calcul1 ?- append([1], [2], Res).

2 Res = [1, 2].

Generare1 ?- append(L1, L2, [1, 2]).

2 L1 = [],

3 L2 = [1, 2] ;

4 L1 = [1],

5 L2 = [2] ;

6 L1 = [1, 2],

7 L2 = [] ;

8 false.

Estomparea granit,elor dintre “intrare” s, i “ies, ire”

311 / 423

Page 875: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Axiome s, i reguli

Procesul de demonstrare

Controlul execut,iei

Caracteristici

312 / 423

Page 876: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemplul genealogic I

S = /0G = {gp(X, Y)}

gp(X1, Y1) :-p(X1, Z1), p(Z1, Y1)

S = {X = X1, Y = Y1}G = {p(X1, Z1), p(Z1, Y1)}

p(andrei, bogdan)

. . .

p(andrei, bianca)

. . .

p(bogdan, cristi)

. . .

313 / 423

Page 877: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemplul genealogic II. . .

p(andrei, bogdan)

S = {X = X1, Y = Y1, X1 = andrei, Z1 = bogdan}G = {p(bogdan, Y1)}

p(bogdan, cristi)

S = {X = X1, Y = Y1, X1 = andrei, Z1 = bogdan, Y1 = cristi}G = /0

succes

314 / 423

Page 878: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemplul genealogic III

. . .

p(andrei, bianca)

S = {X = X1, Y = Y1, X1 = andrei, Z1 = bianca}G = {p(bianca, Y1)}

es, ec

315 / 423

Page 879: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemplul genealogic IV

. . .

p(bogdan, cristi)

S = {X = X1, Y = Y1, X1 = bogdan, Z1 = cristi}G = {p(cristi, Y1)}

es, ec

316 / 423

Page 880: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Pas, i în demonstrare I

1. Init,ializarea stivei de scopuri cu scopul solicitat

2. Init,ializarea substitut,iei utilizate pe parcursul unificariicu mult,imea vida

3. Extragerea scopului din vârful stivei s, i determinareaprimei clauze din program cu a carei concluzie unifica

4. Îmbogat,irea corespunzatoare a substitut,iei s, iadaugarea premiselor clauzei în stiva, în ordinea dinprogram

5. Salt la pasul 3

317 / 423

Page 881: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Pas, i în demonstrare II

6. În cazul imposibilitat,ii satisfacerii scopului din vârfulstivei, revenirea la scopul anterior (backtracking),s, i încercarea altei modalitat,i de satisfacere

7. Succes la golirea stivei de scopuri

8. Es, ec la imposibilitatea satisfacerii ultimului scopdin stiva

318 / 423

Page 882: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Observat,ii

I Ordinea clauzelor în program

I Ordinea premiselor în cadrul regulilor

I Recomandare: premisele mai us, or de satisfacut,primele — exemplu: axiome

319 / 423

Page 883: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Strategii de control

Forward chaining (data-driven)

I Premise → scopI Derivarea tuturor concluziilor posibileI Oprire la obt,inerea scopului (scopurilor)

Backward chaining (goal-driven)

I Scop → premiseI Utilizarea exclusiva a regulilor care pot contribui

efectiv la satisfacerea scopuluiI Satisfacerea premiselor acestor reguli s, .a.m.d.

320 / 423

Page 884: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Axiome s, i reguli

Procesul de demonstrare

Controlul execut,iei

Caracteristici

321 / 423

Page 885: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Minimul a doua numere I

1 min(X, Y, M) :- X =< Y, M is X.

2 min(X, Y, M) :- X > Y, M is Y.

3

4 min2(X, Y, M) :- X =< Y, M = X.

5 min2(X, Y, M) :- X > Y, M = Y.

6

7 % Echivalent cu min2.

8 min3(X, Y, X) :- X =< Y.

9 min3(X, Y, Y) :- X > Y.

322 / 423

Page 886: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Minimul a doua numere II

1 ?- min(1+2, 3+4, M).

2 M = 3 ;

3 false.

4

5 ?- min(3+4, 1+2, M).

6 M = 3.

7

8 ?- min2(1+2, 3+4, M).

9 M = 1+2 ;

10 false.

11

12 ?- min2(3+4, 1+2, M).

13 M = 1+2.

323 / 423

Page 887: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Minimul a doua numere III

Condit,ii mutual exclusive: X =< Y s, i X > Y — cum putemelimina redundant,a?

12 min4(X, Y, X) :- X =< Y.

13 min4(X, Y, Y).

1 ?- min4(1+2, 3+4, M).

2 M = 1+2 ;

3 M = 3+4.

Gres, it!

324 / 423

Page 888: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Minimul a doua numere IV

Solut,ie: oprirea recursivitat,ii dupa prima satisfacerea scopului

15 min5(X, Y, X) :- X =< Y, !.

16 min5(X, Y, Y).

1 ?- min5(1+2, 3+4, M).

2 M = 1+2.

325 / 423

Page 889: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Operatorul cut I

I La prima întâlnire: satisfacere

I La a doua întâlnire, în momentul revenirii(backtracking): es, ec, cu inhibarea tuturor cailorulterioare de satisfacere a scopului care a unificatcu concluzia regulii curente

I Utilitate în eficientizarea programelor

326 / 423

Page 890: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Operatorul cut II

1 girl(mary).

2 girl(ann).

3

4 boy(john).

5 boy(bill).

6

7 pair(X, Y) :- girl(X), boy(Y).

8 pair(bella, harry).

9

10 pair2(X, Y) :- girl(X), !, boy(Y).

11 pair2(bella, harry).

Backtracking doar la dreapta operatorului

327 / 423

Page 891: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Operatorul cut III

1 ?- pair(X, Y).

2 X = mary,

3 Y = john ;

4 X = mary,

5 Y = bill ;

6 X = ann,

7 Y = john ;

8 X = ann,

9 Y = bill ;

10 X = bella,

11 Y = harry.

1 ?- pair2(X, Y).

2 X = mary,

3 Y = john ;

4 X = mary,

5 Y = bill.

328 / 423

Page 892: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Axiome s, i reguli

Procesul de demonstrare

Controlul execut,iei

Caracteristici

329 / 423

Page 893: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Programare logica

I Reprezentare simbolica

I Stil declarativ

I Separarea datelor de procesul de inferent,a,incorporat în limbaj

I Uniformitatea reprezentarii axiomelors, i a regulilor de derivare

I Reprezentarea modularizata a cunos, tint,elor

I Posibilitatea modificarii dinamice a programelor,prin adaugarea s, i retragerea axiomelor s, i a regulilor

330 / 423

Page 894: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Prolog I

I Bazat pe logica cu predicate de ordin 1, restrict,ionata

I “Calculul”: satisfacerea de scopuri,prin reducere la absurd

I Regula de inferent,a: rezolut,ia

I Strategia de control, în evolut,ia demonstrat,iilor:I backward chaining: de la scop catre axiomeI parcurgere în adâncime, în arborele de derivare

I Parcurgerea în adâncime:I pericolul coborârii pe o cale infinita, ce nu cont,ine

solut,ia — strategie incompletaI eficient,a sporita în utilizarea spat,iului

331 / 423

Page 895: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Prolog III Exclusiv clauze Horn:

A1∧ . . .∧An⇒ A (Regula)true⇒ B (Axioma)

I Absent,a negat,iilor explicite — desprinderea falsitat,iipe baza imposibilitat,ii de a demonstra

I Ipoteza lumii închise (closed world assumption):ceea ce nu poate fi demonstrat este fals

I Prin opozit,ie, ipoteza lumii deschise (open worldassumption): nu se poate afirma nimic despre ceeace nu poate fi demonstrat

332 / 423

Page 896: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Negat,ia ca es, ec

1 nott(P) :- P, !, fail.2 nott(P).

I P → atom — exemplu: boy(john)

I P satisfiabil:I es, ecul primei reguli, din cauza lui failI abandonarea celei de-a doua reguli, din cauza lui !I rezultat: nott(P) nesatisfiabil

I P nesatisfiabil:I es, ecul primei reguliI succesul celei de-a doua reguliI rezultat: nott(P) satisfiabil

333 / 423

Page 897: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezumat

I Date: clauze Horn

I Regula de inferent,a: rezolut,ie

I Strategia de cautare: backward chaining,dinspre concluzie spre ipoteze

I Posibilitat,i generative, pe baza unui anumit stilde scriere a regulilor

334 / 423

Page 898: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Partea XII

Logica propozit,ionalas, i logica cu predicate de ordinul I

335 / 423

Page 899: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Logica propozit,ionalaSintaxa s, i semanticaSatisfiabilitate s, i validitateDerivabilitateInferent,a s, i demonstrat,ieRezolut,ie

Logica cu predicate de ordinul ISintaxa s, i semanticaForma clauzalaUnificare

336 / 423

Page 900: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Logica propozit,ionalaSintaxa s, i semanticaSatisfiabilitate s, i validitateDerivabilitateInferent,a s, i demonstrat,ieRezolut,ie

Logica cu predicate de ordinul ISintaxa s, i semanticaForma clauzalaUnificare

337 / 423

Page 901: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Logica

I Scop: reducerea efectuarii de rat,ionamente la calcul

I Problemele de decidabilitate din logica: stimulentpentru dezvoltarea modelelor de calculabilitate

I Împrumuturi reciproce între domeniile logiciis, i calculabilitat,ii:

I proiectarea s, i verificarea programelor → logicaI principiile logice → proiectarea limbajelor

de programare

(Harrison, 2009)

338 / 423

Page 902: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Logica

I Scop: reducerea efectuarii de rat,ionamente la calcul

I Problemele de decidabilitate din logica: stimulentpentru dezvoltarea modelelor de calculabilitate

I Împrumuturi reciproce între domeniile logiciis, i calculabilitat,ii:

I proiectarea s, i verificarea programelor → logicaI principiile logice → proiectarea limbajelor

de programare

(Harrison, 2009)

338 / 423

Page 903: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Logica

I Scop: reducerea efectuarii de rat,ionamente la calcul

I Problemele de decidabilitate din logica: stimulentpentru dezvoltarea modelelor de calculabilitate

I Împrumuturi reciproce între domeniile logiciis, i calculabilitat,ii:

I proiectarea s, i verificarea programelor → logicaI principiile logice → proiectarea limbajelor

de programare

(Harrison, 2009)

338 / 423

Page 904: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Logica

I Scop: reducerea efectuarii de rat,ionamente la calcul

I Problemele de decidabilitate din logica: stimulentpentru dezvoltarea modelelor de calculabilitate

I Împrumuturi reciproce între domeniile logiciis, i calculabilitat,ii:

I proiectarea s, i verificarea programelor → logica

I principiile logice → proiectarea limbajelorde programare

(Harrison, 2009)

338 / 423

Page 905: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Logica

I Scop: reducerea efectuarii de rat,ionamente la calcul

I Problemele de decidabilitate din logica: stimulentpentru dezvoltarea modelelor de calculabilitate

I Împrumuturi reciproce între domeniile logiciis, i calculabilitat,ii:

I proiectarea s, i verificarea programelor → logicaI principiile logice → proiectarea limbajelor

de programare

(Harrison, 2009)

338 / 423

Page 906: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rolurile logicii

I Descrierea proprietat,ilor obiectelor, într-o manieraneambigua, prin intermediul unui limbaj,cu urmatoarele componente:

I sintaxa: modalitatea de construct,ie a expresiilorI semantica: semnificat,ia expresiilor construite

I Deducerea de noi proprietat,i, pe baza celor existente

339 / 423

Page 907: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rolurile logicii

I Descrierea proprietat,ilor obiectelor, într-o manieraneambigua, prin intermediul unui limbaj,cu urmatoarele componente:

I sintaxa: modalitatea de construct,ie a expresiilor

I semantica: semnificat,ia expresiilor construite

I Deducerea de noi proprietat,i, pe baza celor existente

339 / 423

Page 908: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rolurile logicii

I Descrierea proprietat,ilor obiectelor, într-o manieraneambigua, prin intermediul unui limbaj,cu urmatoarele componente:

I sintaxa: modalitatea de construct,ie a expresiilorI semantica: semnificat,ia expresiilor construite

I Deducerea de noi proprietat,i, pe baza celor existente

339 / 423

Page 909: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rolurile logicii

I Descrierea proprietat,ilor obiectelor, într-o manieraneambigua, prin intermediul unui limbaj,cu urmatoarele componente:

I sintaxa: modalitatea de construct,ie a expresiilorI semantica: semnificat,ia expresiilor construite

I Deducerea de noi proprietat,i, pe baza celor existente

339 / 423

Page 910: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Logica propozit,ionalaSintaxa s, i semanticaSatisfiabilitate s, i validitateDerivabilitateInferent,a s, i demonstrat,ieRezolut,ie

Logica cu predicate de ordinul ISintaxa s, i semanticaForma clauzalaUnificare

340 / 423

Page 911: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Logica propozit,ionala

I Expresia din limbaj: propozit,ia, corespunzatoareunei afirmat,ii, ce poate fi adevarata sau falsa

I Exemplu: “Telefonul suna s, i câinele latra.”

I Accept,ii asupra unei propozit,ii:

I secvent,a de simboluri utilizate sauI înt,elesul propriu-zis al acesteia, într-o interpretare

I Valoarea de adevar a unei propozit,ii — determinatade valorile de adevar ale propozit,iilor constituente

(Genesereth, 2010)

341 / 423

Page 912: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Logica propozit,ionala

I Expresia din limbaj: propozit,ia, corespunzatoareunei afirmat,ii, ce poate fi adevarata sau falsa

I Exemplu: “Telefonul suna s, i câinele latra.”

I Accept,ii asupra unei propozit,ii:

I secvent,a de simboluri utilizate sauI înt,elesul propriu-zis al acesteia, într-o interpretare

I Valoarea de adevar a unei propozit,ii — determinatade valorile de adevar ale propozit,iilor constituente

(Genesereth, 2010)

341 / 423

Page 913: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Logica propozit,ionala

I Expresia din limbaj: propozit,ia, corespunzatoareunei afirmat,ii, ce poate fi adevarata sau falsa

I Exemplu: “Telefonul suna s, i câinele latra.”

I Accept,ii asupra unei propozit,ii:

I secvent,a de simboluri utilizate sauI înt,elesul propriu-zis al acesteia, într-o interpretare

I Valoarea de adevar a unei propozit,ii — determinatade valorile de adevar ale propozit,iilor constituente

(Genesereth, 2010)

341 / 423

Page 914: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Logica propozit,ionala

I Expresia din limbaj: propozit,ia, corespunzatoareunei afirmat,ii, ce poate fi adevarata sau falsa

I Exemplu: “Telefonul suna s, i câinele latra.”

I Accept,ii asupra unei propozit,ii:I secvent,a de simboluri utilizate sau

I înt,elesul propriu-zis al acesteia, într-o interpretare

I Valoarea de adevar a unei propozit,ii — determinatade valorile de adevar ale propozit,iilor constituente

(Genesereth, 2010)

341 / 423

Page 915: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Logica propozit,ionala

I Expresia din limbaj: propozit,ia, corespunzatoareunei afirmat,ii, ce poate fi adevarata sau falsa

I Exemplu: “Telefonul suna s, i câinele latra.”

I Accept,ii asupra unei propozit,ii:I secvent,a de simboluri utilizate sauI înt,elesul propriu-zis al acesteia, într-o interpretare

I Valoarea de adevar a unei propozit,ii — determinatade valorile de adevar ale propozit,iilor constituente

(Genesereth, 2010)

341 / 423

Page 916: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Logica propozit,ionala

I Expresia din limbaj: propozit,ia, corespunzatoareunei afirmat,ii, ce poate fi adevarata sau falsa

I Exemplu: “Telefonul suna s, i câinele latra.”

I Accept,ii asupra unei propozit,ii:I secvent,a de simboluri utilizate sauI înt,elesul propriu-zis al acesteia, într-o interpretare

I Valoarea de adevar a unei propozit,ii — determinatade valorile de adevar ale propozit,iilor constituente

(Genesereth, 2010)

341 / 423

Page 917: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Logica propozit,ionalaSintaxa s, i semanticaSatisfiabilitate s, i validitateDerivabilitateInferent,a s, i demonstrat,ieRezolut,ie

Logica cu predicate de ordinul ISintaxa s, i semanticaForma clauzalaUnificare

342 / 423

Page 918: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Sintaxa

I 2 categorii de propozit,iiI simple: fapte atomice:

“Telefonul suna.”, “Câinele latra.”I compuse: relat,ii între propozit,ii mai simple:

“Telefonul suna s, i câinele latra.”

I Propozit,ii simple: p,q, r , . . .

I Negat,ii: ¬α

I Conjunct,ii: (α ∧β )

I Disjunct,ii: (α ∨β )

I Implicat,ii: (α ⇒ β )

I Echivalent,e: (α ⇔ β )

343 / 423

Page 919: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Sintaxa

I 2 categorii de propozit,iiI simple: fapte atomice:

“Telefonul suna.”, “Câinele latra.”I compuse: relat,ii între propozit,ii mai simple:

“Telefonul suna s, i câinele latra.”

I Propozit,ii simple: p,q, r , . . .

I Negat,ii: ¬α

I Conjunct,ii: (α ∧β )

I Disjunct,ii: (α ∨β )

I Implicat,ii: (α ⇒ β )

I Echivalent,e: (α ⇔ β )

343 / 423

Page 920: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Semantica I

I Atribuirea de valori de adevar propozit,iilor

I Accent pe relat,iile dintre propozit,iile compuses, i cele constituente

I Pentru explicitarea legaturilor, utilizarea conceptuluide interpretare

344 / 423

Page 921: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Semantica II

I Interpretare = mult,ime de asocieri între fiecarepropozit,ie simpla din limbaj s, i o valoare de adevar

I Exemplu:

Interpretarea I:I pI = false

I qI = true

I r I = false

Interpretarea J:I pJ = true

I qJ = true

I r J = true

I Sub o interpretare fixata, dependent,a valorii deadevar a unei propozit,ii compuse de valorile deadevar ale celor constituente

345 / 423

Page 922: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Semantica III

I Negat,ie:

(¬α)I =

{true daca α I = falsefalse altfel

I Conjunct,ie:

(α ∧β )I =

{true daca α I = true s, i β I = truefalse altfel

I Disjunct,ie:

(α ∨β )I =

{false daca α I = false s, i β I = falsetrue altfel

346 / 423

Page 923: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Semantica IV

I Implicat,ie:

(α ⇒ β )I =

{false daca α I = true s, i β I = falsetrue altfel

I Echivalent,a:

(α ⇔ β )I =

{true daca α I = β I

false altfel

347 / 423

Page 924: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Evaluare

I Evaluare = determinarea valorii de adevar a uneipropozit,ii, sub o interpretare, prin aplicarea regulilorsemantice anterioare

I Exemplu:

Interpretarea I:I pI = false

I qI = true

I r I = false

Propozit,ia: φ = (p∧q)∨ (q⇒ r )

φI = (false∧ true)∨ (true⇒ false)

= false∨ false= false

348 / 423

Page 925: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Logica propozit,ionalaSintaxa s, i semanticaSatisfiabilitate s, i validitateDerivabilitateInferent,a s, i demonstrat,ieRezolut,ie

Logica cu predicate de ordinul ISintaxa s, i semanticaForma clauzalaUnificare

349 / 423

Page 926: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Satisfiabilitate

I Satisfiabilitate = proprietatea unei propozit,iiadevarate în cel put,in o interpretare

I Metoda tabelei de adevar:

p q r (p∧q)∨ (q⇒ r )

true true true truetrue true false truetrue false true truetrue false false truefalse true true truefalse true false falsefalse false true falsefalse false false false

350 / 423

Page 927: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Validitate

I Validitate = proprietatea unei propozit,ii adevarateîn toate interpretarile (tautologie)

I Exemplu: p∨¬p

I Verificabila prin metoda tabelei de adevar

351 / 423

Page 928: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Nesatisfiabilitate

I Nesatisfiabilitate = proprietatea unei propozit,ii falseîn toate interpretarile (contradict,ie)

I Exemplu: p⇔¬p

I Verificabila prin metoda tabelei de adevar

352 / 423

Page 929: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Logica propozit,ionalaSintaxa s, i semanticaSatisfiabilitate s, i validitateDerivabilitateInferent,a s, i demonstrat,ieRezolut,ie

Logica cu predicate de ordinul ISintaxa s, i semanticaForma clauzalaUnificare

353 / 423

Page 930: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Derivabilitate II Derivabilitate logica = proprietatea unei propozit,ii

de a reprezenta consecint,a logica a unei mult,imide alte propozit,ii, numite premise

I Mult,imea de propozit,ii ∆ deriva propozit,ia φ , daca s, inumai daca orice interpretare care satisface toatepropozit,iile din ∆ satisface s, i φ :

∆ |= φ

I Exemple:I {p} |= p∨qI {p,q} |= p∧qI {p} 6|= p∧qI {p,p⇒ q} |= q

354 / 423

Page 931: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Derivabilitate II

I Verificabila prin metoda tabelei de adevar: toateintrarile pentru care premisele sunt adevarate trebuiesa induca adevarul concluziei

I Exemplu: demonstram ca {p,p⇒ q} |= q.

p q p⇒ qtrue true truetrue false falsefalse true truefalse false true

Singura intrare în care ambele premise, p s, i p⇒ q,sunt adevarate, precizeaza s, i adevarul concluziei, q.

355 / 423

Page 932: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formulari echivalente ale derivabilitat,ii

I {φ1, . . . ,φn} |= φ

I Propozit,ia φ1∧ . . .∧φn⇒ φ este

valida

I Propozit,ia φ1∧ . . .∧φn∧¬φ este nesatisfiabila

356 / 423

Page 933: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formulari echivalente ale derivabilitat,ii

I {φ1, . . . ,φn} |= φ

I Propozit,ia φ1∧ . . .∧φn⇒ φ este valida

I Propozit,ia φ1∧ . . .∧φn∧¬φ este

nesatisfiabila

356 / 423

Page 934: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Formulari echivalente ale derivabilitat,ii

I {φ1, . . . ,φn} |= φ

I Propozit,ia φ1∧ . . .∧φn⇒ φ este valida

I Propozit,ia φ1∧ . . .∧φn∧¬φ este nesatisfiabila

356 / 423

Page 935: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Logica propozit,ionalaSintaxa s, i semanticaSatisfiabilitate s, i validitateDerivabilitateInferent,a s, i demonstrat,ieRezolut,ie

Logica cu predicate de ordinul ISintaxa s, i semanticaForma clauzalaUnificare

357 / 423

Page 936: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Motivat,ie

I Derivabilitate logica: proprietate a propozit,iilor

I Derivare mecanica (inferent,a): demers de calcul,în scopul verificarii derivabilitat,ii logice

I Cres, terea exponent,iala a numarului de interpretariîn raport cu numarul de propozit,ii simple

I De aici, diminuarea valorii practice a metodelorsemantice, precum cea a tabelei de adevar

I Alternativ, metode sintactice, care manipuleazadoar reprezentarea simbolica

358 / 423

Page 937: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Motivat,ie

I Derivabilitate logica: proprietate a propozit,iilor

I Derivare mecanica (inferent,a): demers de calcul,în scopul verificarii derivabilitat,ii logice

I Cres, terea exponent,iala a numarului de interpretariîn raport cu numarul de propozit,ii simple

I De aici, diminuarea valorii practice a metodelorsemantice, precum cea a tabelei de adevar

I Alternativ, metode sintactice, care manipuleazadoar reprezentarea simbolica

358 / 423

Page 938: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Motivat,ie

I Derivabilitate logica: proprietate a propozit,iilor

I Derivare mecanica (inferent,a): demers de calcul,în scopul verificarii derivabilitat,ii logice

I Cres, terea exponent,iala a numarului de interpretariîn raport cu numarul de propozit,ii simple

I De aici, diminuarea valorii practice a metodelorsemantice, precum cea a tabelei de adevar

I Alternativ, metode sintactice, care manipuleazadoar reprezentarea simbolica

358 / 423

Page 939: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Motivat,ie

I Derivabilitate logica: proprietate a propozit,iilor

I Derivare mecanica (inferent,a): demers de calcul,în scopul verificarii derivabilitat,ii logice

I Cres, terea exponent,iala a numarului de interpretariîn raport cu numarul de propozit,ii simple

I De aici, diminuarea valorii practice a metodelorsemantice, precum cea a tabelei de adevar

I Alternativ, metode sintactice, care manipuleazadoar reprezentarea simbolica

358 / 423

Page 940: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Motivat,ie

I Derivabilitate logica: proprietate a propozit,iilor

I Derivare mecanica (inferent,a): demers de calcul,în scopul verificarii derivabilitat,ii logice

I Cres, terea exponent,iala a numarului de interpretariîn raport cu numarul de propozit,ii simple

I De aici, diminuarea valorii practice a metodelorsemantice, precum cea a tabelei de adevar

I Alternativ, metode sintactice, care manipuleazadoar reprezentarea simbolica

358 / 423

Page 941: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Inferent,a

I Inferent,a = derivarea mecanica a concluziilorunei mult,imi de premise

I Regula de inferent,a = procedura de calcul capabilasa deriveze concluziile unei mult,imi de premise

I Derivabilitatea mecanica a concluziei φ din mult,imeade premise ∆, utilizând regula de inferent,a inf :

∆ `inf φ

359 / 423

Page 942: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Inferent,a

I Inferent,a = derivarea mecanica a concluziilorunei mult,imi de premise

I Regula de inferent,a = procedura de calcul capabilasa deriveze concluziile unei mult,imi de premise

I Derivabilitatea mecanica a concluziei φ din mult,imeade premise ∆, utilizând regula de inferent,a inf :

∆ `inf φ

359 / 423

Page 943: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Inferent,a

I Inferent,a = derivarea mecanica a concluziilorunei mult,imi de premise

I Regula de inferent,a = procedura de calcul capabilasa deriveze concluziile unei mult,imi de premise

I Derivabilitatea mecanica a concluziei φ din mult,imeade premise ∆, utilizând regula de inferent,a inf :

∆ `inf φ

359 / 423

Page 944: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Reguli de inferent,a

I S, abloane parametrizate de rat,ionament, formatedintr-o mult,ime de premise s, i o mult,ime de concluzii

I Modus Ponens (MP):

α ⇒ β

α

β

I Modus Tollens:α ⇒ β

¬β

¬α

360 / 423

Page 945: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Reguli de inferent,a

I S, abloane parametrizate de rat,ionament, formatedintr-o mult,ime de premise s, i o mult,ime de concluzii

I Modus Ponens (MP):

α ⇒ β

α

β

I Modus Tollens:α ⇒ β

¬β

¬α

360 / 423

Page 946: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Reguli de inferent,a

I S, abloane parametrizate de rat,ionament, formatedintr-o mult,ime de premise s, i o mult,ime de concluzii

I Modus Ponens (MP):

α ⇒ β

α

β

I Modus Tollens:α ⇒ β

¬β

¬α

360 / 423

Page 947: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Proprietat,i ale regulilor de inferent,a

I Consistent,a (soundness): regula de inferent,adetermina doar propozit,ii care sunt, într-adevar,consecint,e logice ale premiselor:

∆ `inf φ ⇒∆ |= φ

I Completitudine (completeness): regula de inferent,adetermina toate consecint,ele logice ale premiselor:

∆ |= φ ⇒∆ `inf φ

I Ideal, ambele proprietat,i: “nici în plus, nici în minus”

I Incompletitudinea regulii Modus Ponens, dinimposibilitatea scrierii oricarei propozit,ii ca implicat,ie

361 / 423

Page 948: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Proprietat,i ale regulilor de inferent,a

I Consistent,a (soundness): regula de inferent,adetermina doar propozit,ii care sunt, într-adevar,consecint,e logice ale premiselor:

∆ `inf φ ⇒∆ |= φ

I Completitudine (completeness): regula de inferent,adetermina toate consecint,ele logice ale premiselor:

∆ |= φ ⇒∆ `inf φ

I Ideal, ambele proprietat,i: “nici în plus, nici în minus”

I Incompletitudinea regulii Modus Ponens, dinimposibilitatea scrierii oricarei propozit,ii ca implicat,ie

361 / 423

Page 949: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Proprietat,i ale regulilor de inferent,a

I Consistent,a (soundness): regula de inferent,adetermina doar propozit,ii care sunt, într-adevar,consecint,e logice ale premiselor:

∆ `inf φ ⇒∆ |= φ

I Completitudine (completeness): regula de inferent,adetermina toate consecint,ele logice ale premiselor:

∆ |= φ ⇒∆ `inf φ

I Ideal, ambele proprietat,i: “nici în plus, nici în minus”

I Incompletitudinea regulii Modus Ponens, dinimposibilitatea scrierii oricarei propozit,ii ca implicat,ie

361 / 423

Page 950: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Proprietat,i ale regulilor de inferent,a

I Consistent,a (soundness): regula de inferent,adetermina doar propozit,ii care sunt, într-adevar,consecint,e logice ale premiselor:

∆ `inf φ ⇒∆ |= φ

I Completitudine (completeness): regula de inferent,adetermina toate consecint,ele logice ale premiselor:

∆ |= φ ⇒∆ `inf φ

I Ideal, ambele proprietat,i: “nici în plus, nici în minus”

I Incompletitudinea regulii Modus Ponens, dinimposibilitatea scrierii oricarei propozit,ii ca implicat,ie

361 / 423

Page 951: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

AxiomeI Exemplu: verificarea ca {p⇒ q,q⇒ r} |= p⇒ r

I Caz în care premisele sunt insuficientepentru aplicarea regulilor de inferent,a

I Solut,ia: adaugarea de axiome, reguli de inferent,afara premise

I Introducerea implicat,iei (II):

α ⇒ (β ⇒ α)

I Distribuirea implicat,iei (DI):

(α ⇒ (β ⇒ γ))⇒ ((α ⇒ β )⇒ (α ⇒ γ))

362 / 423

Page 952: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

AxiomeI Exemplu: verificarea ca {p⇒ q,q⇒ r} |= p⇒ r

I Caz în care premisele sunt insuficientepentru aplicarea regulilor de inferent,a

I Solut,ia: adaugarea de axiome, reguli de inferent,afara premise

I Introducerea implicat,iei (II):

α ⇒ (β ⇒ α)

I Distribuirea implicat,iei (DI):

(α ⇒ (β ⇒ γ))⇒ ((α ⇒ β )⇒ (α ⇒ γ))

362 / 423

Page 953: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

AxiomeI Exemplu: verificarea ca {p⇒ q,q⇒ r} |= p⇒ r

I Caz în care premisele sunt insuficientepentru aplicarea regulilor de inferent,a

I Solut,ia: adaugarea de axiome, reguli de inferent,afara premise

I Introducerea implicat,iei (II):

α ⇒ (β ⇒ α)

I Distribuirea implicat,iei (DI):

(α ⇒ (β ⇒ γ))⇒ ((α ⇒ β )⇒ (α ⇒ γ))

362 / 423

Page 954: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

AxiomeI Exemplu: verificarea ca {p⇒ q,q⇒ r} |= p⇒ r

I Caz în care premisele sunt insuficientepentru aplicarea regulilor de inferent,a

I Solut,ia: adaugarea de axiome, reguli de inferent,afara premise

I Introducerea implicat,iei (II):

α ⇒ (β ⇒ α)

I Distribuirea implicat,iei (DI):

(α ⇒ (β ⇒ γ))⇒ ((α ⇒ β )⇒ (α ⇒ γ))

362 / 423

Page 955: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

AxiomeI Exemplu: verificarea ca {p⇒ q,q⇒ r} |= p⇒ r

I Caz în care premisele sunt insuficientepentru aplicarea regulilor de inferent,a

I Solut,ia: adaugarea de axiome, reguli de inferent,afara premise

I Introducerea implicat,iei (II):

α ⇒ (β ⇒ α)

I Distribuirea implicat,iei (DI):

(α ⇒ (β ⇒ γ))⇒ ((α ⇒ β )⇒ (α ⇒ γ))

362 / 423

Page 956: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Demonstrat,ii I

I Demonstrat,ie = secvent,a de propozit,ii,finalizata cu o concluzie, s, i cont,inând:

I premiseI instant,e ale axiomelorI rezultate ale aplicarii regulilor de inferent,a

asupra elementelor precedente din secvent,a

I Teorema = concluzia cu care se încheieo demonstrat,ie

363 / 423

Page 957: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Demonstrat,ii II

I Procedura de demonstrare = mecanismde demonstrare, constând din:

I o mult,ime de reguli de inferent,a

I o strategie de control, ce dicteaza ordinea aplicariiregulilor

364 / 423

Page 958: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Demonstrat,ii III

Exemplu: demonstram ca {p⇒ q,q⇒ r} ` p⇒ r .

1 p⇒ q Premisa2 q⇒ r Premisa3 (q⇒ r )⇒ (p⇒ (q⇒ r )) II4 p⇒ (q⇒ r ) MP 3, 25 (p⇒ (q⇒ r ))⇒ ((p⇒ q)⇒ (p⇒ r )) DI6 (p⇒ q)⇒ (p⇒ r ) MP 5, 47 p⇒ r MP 6, 1

365 / 423

Page 959: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Demonstrat,ii IV

Rezultat: existent,a unui sistem de inferent,aconsistent s, i complet, bazat pe:

I axiomele de mai devreme, îmbogat,ite cu alteleI regula de inferent,a Modus Ponens

∆ |= φ ⇔∆ ` φ

366 / 423

Page 960: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Logica propozit,ionalaSintaxa s, i semanticaSatisfiabilitate s, i validitateDerivabilitateInferent,a s, i demonstrat,ieRezolut,ie

Logica cu predicate de ordinul ISintaxa s, i semanticaForma clauzalaUnificare

367 / 423

Page 961: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezolut,ie

I Regula de inferent,a foarte puternica

I Baza unui demonstrator de teoremeconsistent s, i complet

I Spat,iul de cautare mult mai mic ca în abordareastandard (v. subsect,iunea anterioara)

I Lucrul cu propozit,ii în forma clauzala

368 / 423

Page 962: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezolut,ie

I Regula de inferent,a foarte puternica

I Baza unui demonstrator de teoremeconsistent s, i complet

I Spat,iul de cautare mult mai mic ca în abordareastandard (v. subsect,iunea anterioara)

I Lucrul cu propozit,ii în forma clauzala

368 / 423

Page 963: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezolut,ie

I Regula de inferent,a foarte puternica

I Baza unui demonstrator de teoremeconsistent s, i complet

I Spat,iul de cautare mult mai mic ca în abordareastandard (v. subsect,iunea anterioara)

I Lucrul cu propozit,ii în forma clauzala

368 / 423

Page 964: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezolut,ie

I Regula de inferent,a foarte puternica

I Baza unui demonstrator de teoremeconsistent s, i complet

I Spat,iul de cautare mult mai mic ca în abordareastandard (v. subsect,iunea anterioara)

I Lucrul cu propozit,ii în forma clauzala

368 / 423

Page 965: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Forma clauzala I

I Literal = propozit,ie simpla (p) sau negat,ia ei (¬p)

I Expresie clauzala = literal sau disjunct,ie de literali,e.g. p∨¬q∨ r ∨p

I Clauza = mult,ime de literali dintr-o expresie clauzala,e.g. {p,¬q, r}

369 / 423

Page 966: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Forma clauzala II

I Forma clauzala (forma normala conjunctiva, FNC) =reprezentarea unei propozit,ii sub forma unei mult,imide clauze, implicit legate prin conjunct,ii

I Exemplu: forma clauzala a propozit,ieip∧ (¬q∨ r )∧ (¬p∨¬r ) este {{p},{¬q, r},{¬p,¬r}}.

I Posibilitatea convertirii oricarei propozit,ii în aceastaforma, prin algoritmul urmator

370 / 423

Page 967: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transformarea în forma clauzala I1. Eliminarea implicat,iilor (I):

α ⇒ β → ¬α ∨β

2. Introducerea negat,iilor în paranteze (N):

¬(α ∧β ) → ¬α ∨¬β etc.

3. Distribuirea lui ∨ fat,a de ∧ (D):

α ∨ (β ∧ γ) → (α ∨β )∧ (α ∨ γ)

4. Transformarea expresiilor în clauze (C):

φ1∨ . . .∨φn → {φ1, . . . ,φn}φ1∧ . . .∧φn → {φ1}, . . . ,{φn}

371 / 423

Page 968: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transformarea în forma clauzala II

I Exemplu: p∧ (q⇒ r )

I p∧ (¬q∨ r )

C {p},{¬q, r}

I Exemplu: ¬(p∧ (q⇒ r ))

I ¬(p∧ (¬q∨ r ))

N ¬p∨¬(¬q∨ r )

N ¬p∨ (q∧¬r )

D (¬p∨q)∧ (¬p∨¬r )

C {¬p,q},{¬p,¬r}

372 / 423

Page 969: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezolut,ie I

I Ideea:{p,q}{¬p, r}{q, r}

I “Anularea” lui p cu ¬p

I p adevarata, ¬p falsa, deci r adevarata

I p falsa, deci q adevarata

I Cel put,in una dintre q s, i r adevarata

I Forma generala:

{p1, . . . , r , . . . ,pm}{q1, . . . ,¬r , . . . ,qn}{p1, . . . ,pm,q1, . . . ,qn}

373 / 423

Page 970: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezolut,ie II

I Rezolvent vid — contradict,ie între premise:

{¬p}{p}{}

I Mai mult de 2 rezolvent,i posibili — se alege doar unul:

{p,q}{¬p,¬q}{p,¬p}{q,¬q}

374 / 423

Page 971: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezolut,ie IIII Modus Ponens — caz particular al rezolut,iei:

p⇒ qpq

{¬p,q}{p}{q}

I Modus Tollens — caz particular al rezolut,iei:

p⇒ q¬q¬p

{¬p,q}{¬q}{¬p}

I Tranzitivitatea implicat,iei:

p⇒ qq⇒ rp⇒ r

{¬p,q}{¬q, r}{¬p, r}

375 / 423

Page 972: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezolut,ie IV

I Demonstrarea nesatisfiabilitat,ii — derivarea clauzeivide

I Demonstrarea derivabilitat,ii concluziei φ dinpremisele φ1, . . . ,φn — demonstrarea nesatisfiabilitat,iipropozit,iei φ1∧ . . .∧φn∧¬φ (reducere la absurd)

I Demonstrarea validitat,ii propozit,iei φ —demonstrarea nesatisfiabilitat,ii propozit,iei ¬φ

I Rezolut,ia incompleta generativ, i.e. concluziile nu potfi derivate direct, raspunsul fiind dat în raportcu o “întrebare” fixata

376 / 423

Page 973: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezolut,ie V

Demonstram prin reducere la absurd ca{p⇒ q,q⇒ r} ` p⇒ r , i.e. ca mult,imea{p⇒ q,q⇒ r ,¬(p⇒ r )} cont,ine o contradict,ie.

1 {¬p,q} Premisa2 {¬q, r} Premisa3 {p} Concluzie negata4 {¬r} Concluzie negata5 {q} 1, 36 {r} 2, 57 {} 4, 6

377 / 423

Page 974: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezolut,ie VI

I Teorema rezolut,iei: rezolut,ia propozit,ionala esteconsistenta s, i completa (nu generativ, v. slide-ul 368):

∆ |= φ ⇔∆ ` φ

I Terminarea garantata a procedurii de aplicarea rezolut,iei: numar finit de clauze, numar finitde concluzii

378 / 423

Page 975: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Logica propozit,ionalaSintaxa s, i semanticaSatisfiabilitate s, i validitateDerivabilitateInferent,a s, i demonstrat,ieRezolut,ie

Logica cu predicate de ordinul ISintaxa s, i semanticaForma clauzalaUnificare

379 / 423

Page 976: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Logica cu predicate de ordinul II Logica propozit,ionala:

I p: “Andrei este prieten cu Bogdan.”I q: “Bogdan este prieten cu Andrei.”I p⇔ qI Opacitate în raport cu obiectele s, i relat,iile referite

I First-order logic (FOL) = extensie a logiciipropozit,ionale, cu explicitarea:

I obiectelor din universul problemeiI relat,iilor dintre acestea

I FOL:I Generalizare: prieten(x ,y): “x este prieten cu y .”I ∀x .∀y .(prieten(x ,y)⇔ prieten(y ,x))I Aplicare pe cazuri particulareI Transparent,a în raport cu obiectele s, i relat,iile referite

(Genesereth, 2010)380 / 423

Page 977: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Logica cu predicate de ordinul II Logica propozit,ionala:

I p: “Andrei este prieten cu Bogdan.”I q: “Bogdan este prieten cu Andrei.”I p⇔ qI Opacitate în raport cu obiectele s, i relat,iile referite

I First-order logic (FOL) = extensie a logiciipropozit,ionale, cu explicitarea:

I obiectelor din universul problemeiI relat,iilor dintre acestea

I FOL:I Generalizare: prieten(x ,y): “x este prieten cu y .”I ∀x .∀y .(prieten(x ,y)⇔ prieten(y ,x))I Aplicare pe cazuri particulareI Transparent,a în raport cu obiectele s, i relat,iile referite

(Genesereth, 2010)380 / 423

Page 978: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Logica cu predicate de ordinul II Logica propozit,ionala:

I p: “Andrei este prieten cu Bogdan.”I q: “Bogdan este prieten cu Andrei.”I p⇔ qI Opacitate în raport cu obiectele s, i relat,iile referite

I First-order logic (FOL) = extensie a logiciipropozit,ionale, cu explicitarea:

I obiectelor din universul problemeiI relat,iilor dintre acestea

I FOL:I Generalizare: prieten(x ,y): “x este prieten cu y .”I ∀x .∀y .(prieten(x ,y)⇔ prieten(y ,x))I Aplicare pe cazuri particulareI Transparent,a în raport cu obiectele s, i relat,iile referite

(Genesereth, 2010)380 / 423

Page 979: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Logica propozit,ionalaSintaxa s, i semanticaSatisfiabilitate s, i validitateDerivabilitateInferent,a s, i demonstrat,ieRezolut,ie

Logica cu predicate de ordinul ISintaxa s, i semanticaForma clauzalaUnificare

381 / 423

Page 980: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

SintaxaSimboluri utilizate

I Constante: obiecte particulare din universuldiscursului: c, d , andrei , bogdan, . . .

I Variabile: obiecte generice: x , y , . . .

I Simboluri funct,ionale: succesor (x), +(x ,y), . . .

I Simboluri relat,ionale (predicate): relat,ii n-arepeste obiectele din universul discursului: divide(x ,y),impar (x), . . .

I Conectori logici: ¬, ∧, . . .

I Cuantificatori: ∀, ∃

382 / 423

Page 981: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Sintaxa ITermeni, atomi, propozit,ii

I Termeni (obiecte):I Constante

I Variabile

I Aplicat,ii de funct,ii: f (t1, . . . , tn), unde f este un simbolfunct,ional n-ar s, i t1, . . . , tn sunt termeni. Exemple:

I succesor (4): succesorul lui 4

I +(2,x): suma simbolurilor 2 s, i x

383 / 423

Page 982: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Sintaxa IITermeni, atomi, propozit,ii

I Atomi (relat,ii): p(t1, . . . , tn), unde p este un predicatn-ar s, i t1, . . . , tn sunt termeni. Exemple:

I impar (3)

I varsta(ion,20)

I = (+(2,3),5)

I Propozit,ii (fapte) — x variabila, A atom, α propozit,ie:I Fals, adevarat: ⊥, >I Atomi: AI Negat,ii: ¬α

I . . .I Cuantificari: ∀x .α, ∃x .α

384 / 423

Page 983: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Sintaxa IIITermeni, atomi, propozit,ii

Exemplu: “Dan este prieten cu sora Ioanei”:

prieten( dan︸︷︷︸termen

,sora(

termen︷ ︸︸ ︷ioana)︸ ︷︷ ︸

termen

)

︸ ︷︷ ︸atom/propozit,ie

I Simplificare: legarea tuturor variabilelor,prin cuantificatori universali sau existent,iali

I Zona de act,iune a unui cuantificator: restul propozit,iei(v. simbolul λ în calculul lambda)

385 / 423

Page 984: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Semantica I

O interpretare consta din:

I Un domeniu nevid, D

I Pentru fiecare constanta c, un element cI ∈D

I Pentru fiecare simbol funct,ional n-ar, f , o funct,ief I : Dn→D

I Pentru fiecare predicat n-ar, p, o funct,iepI : Dn→{false, true}.

386 / 423

Page 985: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Semantica III Atom:

(p(t1, . . . , tn))I = pI(t I1, . . . , t

In)

I Negat,ie etc. (v. logica propozit,ionala)

I Cuantificare universala:

(∀x .α)I =

{false daca exista d ∈D cu α I

[d/x ] = falsetrue altfel

I Cuantificare existent,iala:

(∃x .α)I =

{true daca exista d ∈D cu α I

[d/x ] = truefalse altfel

387 / 423

Page 986: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemple

1. “Vrabia malai viseaza.”

∀x .(vrabie(x)⇒ viseaza(x ,malai))

2. “Unele vrabii viseaza malai.”

∃x .(vrabie(x)∧viseaza(x ,malai))

3. “Nu toate vrabiile viseaza malai.”

∃x .(vrabie(x)∧¬viseaza(x ,malai))

4. “Nicio vrabie nu viseaza malai.”

∀x .(vrabie(x)⇒¬viseaza(x ,malai))

5. “Numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇒ vrabie(x))

6. “Toate s, i numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇔ vrabie(x))

388 / 423

Page 987: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemple

1. “Vrabia malai viseaza.”∀x .(vrabie(x)⇒ viseaza(x ,malai))

2. “Unele vrabii viseaza malai.”

∃x .(vrabie(x)∧viseaza(x ,malai))

3. “Nu toate vrabiile viseaza malai.”

∃x .(vrabie(x)∧¬viseaza(x ,malai))

4. “Nicio vrabie nu viseaza malai.”

∀x .(vrabie(x)⇒¬viseaza(x ,malai))

5. “Numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇒ vrabie(x))

6. “Toate s, i numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇔ vrabie(x))

388 / 423

Page 988: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemple

1. “Vrabia malai viseaza.”∀x .(vrabie(x)⇒ viseaza(x ,malai))

2. “Unele vrabii viseaza malai.”

∃x .(vrabie(x)∧viseaza(x ,malai))

3. “Nu toate vrabiile viseaza malai.”

∃x .(vrabie(x)∧¬viseaza(x ,malai))

4. “Nicio vrabie nu viseaza malai.”

∀x .(vrabie(x)⇒¬viseaza(x ,malai))

5. “Numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇒ vrabie(x))

6. “Toate s, i numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇔ vrabie(x))

388 / 423

Page 989: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemple

1. “Vrabia malai viseaza.”∀x .(vrabie(x)⇒ viseaza(x ,malai))

2. “Unele vrabii viseaza malai.”∃x .(vrabie(x)∧viseaza(x ,malai))

3. “Nu toate vrabiile viseaza malai.”

∃x .(vrabie(x)∧¬viseaza(x ,malai))

4. “Nicio vrabie nu viseaza malai.”

∀x .(vrabie(x)⇒¬viseaza(x ,malai))

5. “Numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇒ vrabie(x))

6. “Toate s, i numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇔ vrabie(x))

388 / 423

Page 990: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemple

1. “Vrabia malai viseaza.”∀x .(vrabie(x)⇒ viseaza(x ,malai))

2. “Unele vrabii viseaza malai.”∃x .(vrabie(x)∧viseaza(x ,malai))

3. “Nu toate vrabiile viseaza malai.”

∃x .(vrabie(x)∧¬viseaza(x ,malai))

4. “Nicio vrabie nu viseaza malai.”

∀x .(vrabie(x)⇒¬viseaza(x ,malai))

5. “Numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇒ vrabie(x))

6. “Toate s, i numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇔ vrabie(x))

388 / 423

Page 991: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemple

1. “Vrabia malai viseaza.”∀x .(vrabie(x)⇒ viseaza(x ,malai))

2. “Unele vrabii viseaza malai.”∃x .(vrabie(x)∧viseaza(x ,malai))

3. “Nu toate vrabiile viseaza malai.”∃x .(vrabie(x)∧¬viseaza(x ,malai))

4. “Nicio vrabie nu viseaza malai.”

∀x .(vrabie(x)⇒¬viseaza(x ,malai))

5. “Numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇒ vrabie(x))

6. “Toate s, i numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇔ vrabie(x))

388 / 423

Page 992: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemple

1. “Vrabia malai viseaza.”∀x .(vrabie(x)⇒ viseaza(x ,malai))

2. “Unele vrabii viseaza malai.”∃x .(vrabie(x)∧viseaza(x ,malai))

3. “Nu toate vrabiile viseaza malai.”∃x .(vrabie(x)∧¬viseaza(x ,malai))

4. “Nicio vrabie nu viseaza malai.”

∀x .(vrabie(x)⇒¬viseaza(x ,malai))

5. “Numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇒ vrabie(x))

6. “Toate s, i numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇔ vrabie(x))

388 / 423

Page 993: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemple

1. “Vrabia malai viseaza.”∀x .(vrabie(x)⇒ viseaza(x ,malai))

2. “Unele vrabii viseaza malai.”∃x .(vrabie(x)∧viseaza(x ,malai))

3. “Nu toate vrabiile viseaza malai.”∃x .(vrabie(x)∧¬viseaza(x ,malai))

4. “Nicio vrabie nu viseaza malai.”∀x .(vrabie(x)⇒¬viseaza(x ,malai))

5. “Numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇒ vrabie(x))

6. “Toate s, i numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇔ vrabie(x))

388 / 423

Page 994: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemple

1. “Vrabia malai viseaza.”∀x .(vrabie(x)⇒ viseaza(x ,malai))

2. “Unele vrabii viseaza malai.”∃x .(vrabie(x)∧viseaza(x ,malai))

3. “Nu toate vrabiile viseaza malai.”∃x .(vrabie(x)∧¬viseaza(x ,malai))

4. “Nicio vrabie nu viseaza malai.”∀x .(vrabie(x)⇒¬viseaza(x ,malai))

5. “Numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇒ vrabie(x))

6. “Toate s, i numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇔ vrabie(x))

388 / 423

Page 995: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemple

1. “Vrabia malai viseaza.”∀x .(vrabie(x)⇒ viseaza(x ,malai))

2. “Unele vrabii viseaza malai.”∃x .(vrabie(x)∧viseaza(x ,malai))

3. “Nu toate vrabiile viseaza malai.”∃x .(vrabie(x)∧¬viseaza(x ,malai))

4. “Nicio vrabie nu viseaza malai.”∀x .(vrabie(x)⇒¬viseaza(x ,malai))

5. “Numai vrabiile viseaza malai.”∀x .(viseaza(x ,malai)⇒ vrabie(x))

6. “Toate s, i numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇔ vrabie(x))

388 / 423

Page 996: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemple

1. “Vrabia malai viseaza.”∀x .(vrabie(x)⇒ viseaza(x ,malai))

2. “Unele vrabii viseaza malai.”∃x .(vrabie(x)∧viseaza(x ,malai))

3. “Nu toate vrabiile viseaza malai.”∃x .(vrabie(x)∧¬viseaza(x ,malai))

4. “Nicio vrabie nu viseaza malai.”∀x .(vrabie(x)⇒¬viseaza(x ,malai))

5. “Numai vrabiile viseaza malai.”∀x .(viseaza(x ,malai)⇒ vrabie(x))

6. “Toate s, i numai vrabiile viseaza malai.”

∀x .(viseaza(x ,malai)⇔ vrabie(x))

388 / 423

Page 997: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemple

1. “Vrabia malai viseaza.”∀x .(vrabie(x)⇒ viseaza(x ,malai))

2. “Unele vrabii viseaza malai.”∃x .(vrabie(x)∧viseaza(x ,malai))

3. “Nu toate vrabiile viseaza malai.”∃x .(vrabie(x)∧¬viseaza(x ,malai))

4. “Nicio vrabie nu viseaza malai.”∀x .(vrabie(x)⇒¬viseaza(x ,malai))

5. “Numai vrabiile viseaza malai.”∀x .(viseaza(x ,malai)⇒ vrabie(x))

6. “Toate s, i numai vrabiile viseaza malai.”∀x .(viseaza(x ,malai)⇔ vrabie(x))

388 / 423

Page 998: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

CuantificatoriGres, eli frecvente

I ∀x .(vrabie(x)⇒ viseaza(x ,malai))

→ corect: “Toate vrabiile viseaza malai.”

I ∀x .(vrabie(x)∧viseaza(x ,malai))

→ gres, it: “Tot,i sunt vrabii care viseaza malai.”

I ∃x .(vrabie(x)∧viseaza(x ,malai))

→ corect: “Unele vrabii viseaza malai.”

I ∃x .(vrabie(x)⇒ viseaza(x ,malai))

→ gres, it: adevarata s, i daca exista cineva carenu este vrabie

389 / 423

Page 999: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

CuantificatoriProprietat,i

I Necomutativitate:I ∀x .∃y .viseaza(x ,y): “Tot,i viseaza la ceva particular.”I ∃y .∀x .viseaza(x ,y): “Tot,i viseaza la acelas, i lucru.”

I Dualitate:I ¬(∀x .α)≡ ∃x .¬α

I ¬(∃x .α)≡ ∀x .¬α

390 / 423

Page 1000: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aspecte legate de propozit,ii

Analoage logicii propozit,ionale:

I Satisfiabilitate

I Valididate

I Derivabilitate

I Inferent,a

I Demonstrat,ie

391 / 423

Page 1001: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Logica propozit,ionalaSintaxa s, i semanticaSatisfiabilitate s, i validitateDerivabilitateInferent,a s, i demonstrat,ieRezolut,ie

Logica cu predicate de ordinul ISintaxa s, i semanticaForma clauzalaUnificare

392 / 423

Page 1002: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Forma clauzala

I Literal: atom (prieten(x ,y)) sau negat,ia lui(¬prieten(x ,y))

I Expresie clauzala = literal sau disjunct,ie de literali,e.g. prieten(x ,y)∨¬doctor (x)

I Clauza = mult,ime de literali dintr-o expresie clauzala,e.g. {prieten(x ,y),¬doctor (x)}

I Clauza Horn = clauza în care un singur literal esteîn forma pozitiva, e.g. {¬A1, . . . ,¬An,A},corespunzatoare implicat,iei A1∧ . . .∧An⇒ A

393 / 423

Page 1003: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transformarea în forma clauzala I

1. Eliminarea implicat,iilor (I)

2. Introducerea negat,iilor în interiorul expresiilor (N)

3. Redenumirea variabilelor cuantificate pentruobt,inerea unicitat,ii de nume (R):

∀x .p(x)∧∀x .q(x)∨∃x .r (x) → ∀x .p(x)∧∀y .q(y)∨∃z.r (z)

4. Deplasarea cuantificatorilor la începutul expresiei,conservându-le ordinea (forma normala prenex) (P):

∀x .p(x)∧∀y .q(y)∨∃z.r (z) → ∀x .∀y .∃z.(p(x)∧q(y)∨r (z))

394 / 423

Page 1004: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transformarea în forma clauzala II

5. Eliminarea cuantificatorilor existent,iali (skolemizare)(S):

I Daca nu este precedat de cuantificatori universali:înlocuirea aparit,iilor variabilei cuantificate printr-oconstanta:

∃x .p(x) → p(cx )

I Daca este precedat de cuantificatori universali:înlocuirea aparit,iilor variabilei cuantificate prinaplicat,ia unei funct,ii unice asupra variabilelor anteriorcuantificate universal:

∀x .∀y .∃z.(p(x)∧q(y)∨r (z)) → ∀x .∀y .(p(x)∧q(y)∨r (fz(x ,y)))

395 / 423

Page 1005: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transformarea în forma clauzala III

6. Eliminarea cuantificatorilor universali, considerat,iacum implicit,i (U):

∀x .∀y .(p(x)∧q(y)∨r (fz(x ,y))) → p(x)∧q(y)∨r (fz(x ,y))

7. Distribuirea lui ∨ fat,a de ∧ (D):

α ∨ (β ∧ γ) → (α ∨β )∧ (α ∨ γ)

8. Transformarea expresiilor în clauze (C)

396 / 423

Page 1006: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Transformarea în forma clauzala IVExemplu: “Cine rezolva toate laboratoarele este apreciatde cineva.”

∀x .(∀y .(lab(y)⇒ rezolva(x ,y))⇒∃y .apreciaza(y ,x))

I ∀x .(¬∀y .(¬lab(y)∨ rezolva(x ,y))∨∃y .apreciaza(y ,x))

N ∀x .(∃y .¬(¬lab(y)∨ rezolva(x ,y))∨∃y .apreciaza(y ,x))

N ∀x .(∃y .(lab(y)∧¬rezolva(x ,y))∨∃y .apreciaza(y ,x))

R ∀x .(∃y .(lab(y)∧¬rezolva(x ,y))∨∃z.apreciaza(z,x))

P ∀x .∃y .∃z.((lab(y)∧¬rezolva(x ,y))∨apreciaza(z,x))

S ∀x .((lab(fy (x))∧¬rezolva(x , fy (x)))∨apreciaza(fz(x),x))

U (lab(fy (x))∧¬rezolva(x , fy (x)))∨apreciaza(fz(x),x)

D (lab(fy (x))∨apreciaza(fz(x),x))

∧ (¬rezolva(x , fy (x))∨apreciaza(fz(x),x))

C {lab(fy (x)),apreciaza(fz(x),x)},{¬rezolva(x , fy (x)),apreciaza(fz(x),x)}

397 / 423

Page 1007: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Logica propozit,ionalaSintaxa s, i semanticaSatisfiabilitate s, i validitateDerivabilitateInferent,a s, i demonstrat,ieRezolut,ie

Logica cu predicate de ordinul ISintaxa s, i semanticaForma clauzalaUnificare

398 / 423

Page 1008: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Motivat,ie

I Rezolut,ie:

{prieten(x ,mama(y)),doctor (x)}{¬prieten(mama(z),z)}?

I Cum aplicam rezolut,ia?

I Solut,ia: unificare (v. sinteza de tip, slide-ul 241)

I MGU: S = {x ←mama(z),z ←mama(y)}

I Forma comuna a celor doi atomi:prieten(mama(mama(y)),mama(y))

I Rezolvent: doctor (mama(mama(y)))

399 / 423

Page 1009: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Unificare I

I Problema NP-completa

I Posibile legari ciclice

I Exemplu: prieten(x ,mama(x)) s, i prieten(mama(y),y)

I MGU: S = {x ←mama(y),y ←mama(x)}

I x ←mama(mama(x)) → imposibil!

I Solut,ie: verificarea aparit,iei unei variabile în expresiala care a fost legata (occurrence check)

400 / 423

Page 1010: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Unificare II

I Rezolut,ia pentru clauze Horn:

A1∧ . . .∧Am⇒ AB1∧ . . .∧A′∧ . . .∧Bn⇒ Bunificare(A,A′) = Ssubst(S, A1∧ . . .∧Am ∧B1∧ . . .∧Bn⇒ B)

I unificare(α,β ): substitut,ia sub care unifica propozit,iileα s, i β

I subst(S,α): propozit,ia rezultata în urma aplicariisubstitut,iei S asupra propozit,iei α

401 / 423

Page 1011: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezumat

I Expresivitatea superiora a logicii cu predicatede ordinul I, fat,a de cea propozit,ionala

I Propozit,ii satisfiabile, valide, nesatisfiabile

I Derivabilitate logica: proprietatea unei propozit,iide a reprezenta consecint,a logica a altora

I Derivabilitate mecanica (inferent,a): posibilitateaunei propozit,ii de a fi determinata drept consecint,aa altora, în baza unei proceduri de calcul(de inferent,a)

I Rezolut,ie: procedura de inferent,aconsistenta s, i completa (nu generativ)

402 / 423

Page 1012: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Bibliografie

Harrison, J. (2009). Handbook of Practical Logic andAutomated Reasoning. Cambridge University Press.

Genesereth, M. (2010). CS157: Computational Logic,curs Stanford.http://logic.stanford.edu/classes/cs157/2010/cs157.html

403 / 423

Page 1013: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Partea XIII

Mas, ina algoritmica Markov

404 / 423

Page 1014: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Mas, ina algoritmica Markov

405 / 423

Page 1015: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Mas, ina algoritmica Markov

406 / 423

Page 1016: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Mas, ina algoritmica Markov

I Model de calculabilitate efectiva, echivalentcu mas, ina Turing s, i cu calculul lambda

I Principiul de funct,ionare: identificare de s, abloane(eng. pattern matching) s, i substitut,ie

I Fundamentul teoretic al paradigmei asociatives, i al limbajelor bazate pe reguli

407 / 423

Page 1017: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Mas, ina algoritmica Markov

I Model de calculabilitate efectiva, echivalentcu mas, ina Turing s, i cu calculul lambda

I Principiul de funct,ionare: identificare de s, abloane(eng. pattern matching) s, i substitut,ie

I Fundamentul teoretic al paradigmei asociatives, i al limbajelor bazate pe reguli

407 / 423

Page 1018: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Mas, ina algoritmica Markov

I Model de calculabilitate efectiva, echivalentcu mas, ina Turing s, i cu calculul lambda

I Principiul de funct,ionare: identificare de s, abloane(eng. pattern matching) s, i substitut,ie

I Fundamentul teoretic al paradigmei asociatives, i al limbajelor bazate pe reguli

407 / 423

Page 1019: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Paradigma asociativa

I Potrivita mai ales în cazul problemelor ce nu admito solut,ie precisa, algoritmica

I Codificarea cunos, tint,elor specifice unui domenius, i aplicarea lor într-o maniera euristica

I Descrierea proprietat,ilor solut,iei, prin contrastcu pas, ii care trebuie realizat,i pentru obt,inereaacesteia (ce trebuie obt,inut vs. cum)

I Absent,a unui flux explicit de control, deciziile fiinddeterminate implicit, de cunos, tint,ele valabilela un anumit moment — data-driven control

408 / 423

Page 1020: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Paradigma asociativa

I Potrivita mai ales în cazul problemelor ce nu admito solut,ie precisa, algoritmica

I Codificarea cunos, tint,elor specifice unui domenius, i aplicarea lor într-o maniera euristica

I Descrierea proprietat,ilor solut,iei, prin contrastcu pas, ii care trebuie realizat,i pentru obt,inereaacesteia (ce trebuie obt,inut vs. cum)

I Absent,a unui flux explicit de control, deciziile fiinddeterminate implicit, de cunos, tint,ele valabilela un anumit moment — data-driven control

408 / 423

Page 1021: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Paradigma asociativa

I Potrivita mai ales în cazul problemelor ce nu admito solut,ie precisa, algoritmica

I Codificarea cunos, tint,elor specifice unui domenius, i aplicarea lor într-o maniera euristica

I Descrierea proprietat,ilor solut,iei, prin contrastcu pas, ii care trebuie realizat,i pentru obt,inereaacesteia (ce trebuie obt,inut vs. cum)

I Absent,a unui flux explicit de control, deciziile fiinddeterminate implicit, de cunos, tint,ele valabilela un anumit moment — data-driven control

408 / 423

Page 1022: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Paradigma asociativa

I Potrivita mai ales în cazul problemelor ce nu admito solut,ie precisa, algoritmica

I Codificarea cunos, tint,elor specifice unui domenius, i aplicarea lor într-o maniera euristica

I Descrierea proprietat,ilor solut,iei, prin contrastcu pas, ii care trebuie realizat,i pentru obt,inereaacesteia (ce trebuie obt,inut vs. cum)

I Absent,a unui flux explicit de control, deciziile fiinddeterminate implicit, de cunos, tint,ele valabilela un anumit moment — data-driven control

408 / 423

Page 1023: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Cuprins

Introducere

Mas, ina algoritmica Markov

409 / 423

Page 1024: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Structura

AMSA

UC

SRD

I Registrul de date, RD, cu secvent,a de simboli, S

I Unitatea de control, UC

I Spat,iul de stocare a algoritmului, SA, ce cont,inealgoritmul Markov, AM

410 / 423

Page 1025: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Algoritmi

1 setDiff1(A, B); A g1; B g2;

2 ag2 -> a;

3 ag1 -> g1a;

4 a -> .;

5 -> a;

6 end

1 setDiff2(A, B); B g2;

2 g2 -> ;

3 -> .;

4 end

411 / 423

Page 1026: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Registrul de date

I Nemarginit la dreapta

I Simboli din alfabetul Ab∪Al:

I Ab: alfabetul de bazaI Al: alfabetul local / de lucruI Ab∩Al = /0

I S, irurile init,ial s, i final, formate doar cu simboli din Ab

I Simbolii din Al, utilizabili exclusiv în timpul execut,iei

I S, irul de simboli, posibil vid

412 / 423

Page 1027: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Registrul de date

I Nemarginit la dreapta

I Simboli din alfabetul Ab∪Al:

I Ab: alfabetul de bazaI Al: alfabetul local / de lucruI Ab∩Al = /0

I S, irurile init,ial s, i final, formate doar cu simboli din Ab

I Simbolii din Al, utilizabili exclusiv în timpul execut,iei

I S, irul de simboli, posibil vid

412 / 423

Page 1028: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Registrul de date

I Nemarginit la dreapta

I Simboli din alfabetul Ab∪Al:I Ab: alfabetul de baza

I Al: alfabetul local / de lucruI Ab∩Al = /0

I S, irurile init,ial s, i final, formate doar cu simboli din Ab

I Simbolii din Al, utilizabili exclusiv în timpul execut,iei

I S, irul de simboli, posibil vid

412 / 423

Page 1029: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Registrul de date

I Nemarginit la dreapta

I Simboli din alfabetul Ab∪Al:I Ab: alfabetul de bazaI Al: alfabetul local / de lucru

I Ab∩Al = /0

I S, irurile init,ial s, i final, formate doar cu simboli din Ab

I Simbolii din Al, utilizabili exclusiv în timpul execut,iei

I S, irul de simboli, posibil vid

412 / 423

Page 1030: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Registrul de date

I Nemarginit la dreapta

I Simboli din alfabetul Ab∪Al:I Ab: alfabetul de bazaI Al: alfabetul local / de lucruI Ab∩Al = /0

I S, irurile init,ial s, i final, formate doar cu simboli din Ab

I Simbolii din Al, utilizabili exclusiv în timpul execut,iei

I S, irul de simboli, posibil vid

412 / 423

Page 1031: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Registrul de date

I Nemarginit la dreapta

I Simboli din alfabetul Ab∪Al:I Ab: alfabetul de bazaI Al: alfabetul local / de lucruI Ab∩Al = /0

I S, irurile init,ial s, i final, formate doar cu simboli din Ab

I Simbolii din Al, utilizabili exclusiv în timpul execut,iei

I S, irul de simboli, posibil vid

412 / 423

Page 1032: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Registrul de date

I Nemarginit la dreapta

I Simboli din alfabetul Ab∪Al:I Ab: alfabetul de bazaI Al: alfabetul local / de lucruI Ab∩Al = /0

I S, irurile init,ial s, i final, formate doar cu simboli din Ab

I Simbolii din Al, utilizabili exclusiv în timpul execut,iei

I S, irul de simboli, posibil vid

412 / 423

Page 1033: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Registrul de date

I Nemarginit la dreapta

I Simboli din alfabetul Ab∪Al:I Ab: alfabetul de bazaI Al: alfabetul local / de lucruI Ab∩Al = /0

I S, irurile init,ial s, i final, formate doar cu simboli din Ab

I Simbolii din Al, utilizabili exclusiv în timpul execut,iei

I S, irul de simboli, posibil vid

412 / 423

Page 1034: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ReguliI Unitatea de baza a unui algoritm Markov:

regula asociativa de substitut,ie:s,ablon de identificare (LHS) ->

s,ablon de substitut,ie (RHS)

I Exemplu: ag1c -> ac

I S, abloanele: secvent,e de simboli:

I constante: simboli din Ab

I variabile locale: simboli din Al

I variabile generice: simboli speciali, din mult,imea G,legat,i la simboli din Ab

I Pentru RHS = “.” — regula terminala, ce încheieexecut,ia mas, inii

413 / 423

Page 1035: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ReguliI Unitatea de baza a unui algoritm Markov:

regula asociativa de substitut,ie:s,ablon de identificare (LHS) ->

s,ablon de substitut,ie (RHS)

I Exemplu: ag1c -> ac

I S, abloanele: secvent,e de simboli:

I constante: simboli din Ab

I variabile locale: simboli din Al

I variabile generice: simboli speciali, din mult,imea G,legat,i la simboli din Ab

I Pentru RHS = “.” — regula terminala, ce încheieexecut,ia mas, inii

413 / 423

Page 1036: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ReguliI Unitatea de baza a unui algoritm Markov:

regula asociativa de substitut,ie:s,ablon de identificare (LHS) ->

s,ablon de substitut,ie (RHS)

I Exemplu: ag1c -> ac

I S, abloanele: secvent,e de simboli:

I constante: simboli din Ab

I variabile locale: simboli din Al

I variabile generice: simboli speciali, din mult,imea G,legat,i la simboli din Ab

I Pentru RHS = “.” — regula terminala, ce încheieexecut,ia mas, inii

413 / 423

Page 1037: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ReguliI Unitatea de baza a unui algoritm Markov:

regula asociativa de substitut,ie:s,ablon de identificare (LHS) ->

s,ablon de substitut,ie (RHS)

I Exemplu: ag1c -> ac

I S, abloanele: secvent,e de simboli:I constante: simboli din Ab

I variabile locale: simboli din Al

I variabile generice: simboli speciali, din mult,imea G,legat,i la simboli din Ab

I Pentru RHS = “.” — regula terminala, ce încheieexecut,ia mas, inii

413 / 423

Page 1038: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ReguliI Unitatea de baza a unui algoritm Markov:

regula asociativa de substitut,ie:s,ablon de identificare (LHS) ->

s,ablon de substitut,ie (RHS)

I Exemplu: ag1c -> ac

I S, abloanele: secvent,e de simboli:I constante: simboli din Ab

I variabile locale: simboli din Al

I variabile generice: simboli speciali, din mult,imea G,legat,i la simboli din Ab

I Pentru RHS = “.” — regula terminala, ce încheieexecut,ia mas, inii

413 / 423

Page 1039: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ReguliI Unitatea de baza a unui algoritm Markov:

regula asociativa de substitut,ie:s,ablon de identificare (LHS) ->

s,ablon de substitut,ie (RHS)

I Exemplu: ag1c -> ac

I S, abloanele: secvent,e de simboli:I constante: simboli din Ab

I variabile locale: simboli din Al

I variabile generice: simboli speciali, din mult,imea G,legat,i la simboli din Ab

I Pentru RHS = “.” — regula terminala, ce încheieexecut,ia mas, inii

413 / 423

Page 1040: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

ReguliI Unitatea de baza a unui algoritm Markov:

regula asociativa de substitut,ie:s,ablon de identificare (LHS) ->

s,ablon de substitut,ie (RHS)

I Exemplu: ag1c -> ac

I S, abloanele: secvent,e de simboli:I constante: simboli din Ab

I variabile locale: simboli din Al

I variabile generice: simboli speciali, din mult,imea G,legat,i la simboli din Ab

I Pentru RHS = “.” — regula terminala, ce încheieexecut,ia mas, inii

413 / 423

Page 1041: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Variabile generice

I Legate la exact un simbol

I De obicei, notate cu g, urmat de un indice

I Mult,imea valorilor pe care le poate lua o variabila:domeniul variabilei, Dom(g)

I Utilizabile în RHS doar în cazul aparit,iei în LHS

414 / 423

Page 1042: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Variabile generice

I Legate la exact un simbol

I De obicei, notate cu g, urmat de un indice

I Mult,imea valorilor pe care le poate lua o variabila:domeniul variabilei, Dom(g)

I Utilizabile în RHS doar în cazul aparit,iei în LHS

414 / 423

Page 1043: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Variabile generice

I Legate la exact un simbol

I De obicei, notate cu g, urmat de un indice

I Mult,imea valorilor pe care le poate lua o variabila:domeniul variabilei, Dom(g)

I Utilizabile în RHS doar în cazul aparit,iei în LHS

414 / 423

Page 1044: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Variabile generice

I Legate la exact un simbol

I De obicei, notate cu g, urmat de un indice

I Mult,imea valorilor pe care le poate lua o variabila:domeniul variabilei, Dom(g)

I Utilizabile în RHS doar în cazul aparit,iei în LHS

414 / 423

Page 1045: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Algoritmi (detaliu)I Mult,imi ordonate de reguli, îmbogat,ite cu declarat,ii de

I partit,ionare a mult,imii Ab

I variabile generice

I Exemplu: eliminarea simbolilor ce apart,in mult,imii B:1 setDiff1(A, B); A g1; B g2;

2 ag2 -> a;

3 ag1 -> g1a;

4 a -> .;

5 -> a;

6 end

1 setDiff2(A, B); B g2;

2 g2 -> ;

3 -> .;

4 end

I A,B⊆ Ab

I g1, g2: variabile genericeI a: nedeclarata, variabila locala (a ∈ Al)

415 / 423

Page 1046: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aplicabilitatea regulilor

Regula r : a1...an -> b1...bm este aplicabila daca s, inumai daca exista un subs, ir c1...cn, în RD, astfel încât,pentru orice i = 1,n, exact o condit,ie de mai jos esteîndeplinita:

I ai ∈ Ab∧ai = ci

I ai ∈ Al∧ai = ci

I ai ∈G∧ (∀j = 1,n • aj = ai⇒ cj ∈ Dom(ai)∧cj = ci),i.e. variabila ai este legata la o valoare unica,obt,inuta prin potrivirea dintre s, ablon s, i subs, ir.

416 / 423

Page 1047: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aplicarea regulilor

Aplicarea regulii r : a1...an -> b1...bm asupra unuisubs, ir s = c1...cn, în raport cu care este aplicabila,consta în substituirea lui s prin subs, irul q1...qm, calculatastfel:

I bi ∈ Ab⇒ qi = bi

I bi ∈ Al⇒ qi = bi

I bi ∈G∧ (∃j = 1,n • bi = aj)⇒ qi = cj

417 / 423

Page 1048: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Exemplu de aplicare

I Ab = {1, 2, 3}

I Al = {x, y}

I Dom(g1) = {2}

I Dom(g2) = Ab

I s = 1111112x2y31111

I r : 1g1xg1yg2 -> 1g2x

s = 11111 1 2 x 2 y 3 1111

r : 1 g1 x g1 y g2 -> 1g2x

s’ = 1111113x1111

418 / 423

Page 1049: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aplicabilitate vs. aplicare

I Aplicabilitatea potent,iala a

I unei reguli pe mai multe subs, iruriI mai multor reguli pe acelas, i subs, ir

I La un anumit moment, aplicarea propriu-zisa a uneisingure reguli asupra unui singur subs, ir

I Nedeterminism inerent, ce trebuie rezolvat

I Convent,ie:

I aplicarea primei reguli aplicabile, în ordinea definirii,I asupra celui mai din stânga subs, ir asupra careia este

aplicabila

419 / 423

Page 1050: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aplicabilitate vs. aplicare

I Aplicabilitatea potent,iala aI unei reguli pe mai multe subs, iruri

I mai multor reguli pe acelas, i subs, ir

I La un anumit moment, aplicarea propriu-zisa a uneisingure reguli asupra unui singur subs, ir

I Nedeterminism inerent, ce trebuie rezolvat

I Convent,ie:

I aplicarea primei reguli aplicabile, în ordinea definirii,I asupra celui mai din stânga subs, ir asupra careia este

aplicabila

419 / 423

Page 1051: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aplicabilitate vs. aplicare

I Aplicabilitatea potent,iala aI unei reguli pe mai multe subs, iruriI mai multor reguli pe acelas, i subs, ir

I La un anumit moment, aplicarea propriu-zisa a uneisingure reguli asupra unui singur subs, ir

I Nedeterminism inerent, ce trebuie rezolvat

I Convent,ie:

I aplicarea primei reguli aplicabile, în ordinea definirii,I asupra celui mai din stânga subs, ir asupra careia este

aplicabila

419 / 423

Page 1052: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aplicabilitate vs. aplicare

I Aplicabilitatea potent,iala aI unei reguli pe mai multe subs, iruriI mai multor reguli pe acelas, i subs, ir

I La un anumit moment, aplicarea propriu-zisa a uneisingure reguli asupra unui singur subs, ir

I Nedeterminism inerent, ce trebuie rezolvat

I Convent,ie:

I aplicarea primei reguli aplicabile, în ordinea definirii,I asupra celui mai din stânga subs, ir asupra careia este

aplicabila

419 / 423

Page 1053: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aplicabilitate vs. aplicare

I Aplicabilitatea potent,iala aI unei reguli pe mai multe subs, iruriI mai multor reguli pe acelas, i subs, ir

I La un anumit moment, aplicarea propriu-zisa a uneisingure reguli asupra unui singur subs, ir

I Nedeterminism inerent, ce trebuie rezolvat

I Convent,ie:

I aplicarea primei reguli aplicabile, în ordinea definirii,I asupra celui mai din stânga subs, ir asupra careia este

aplicabila

419 / 423

Page 1054: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aplicabilitate vs. aplicare

I Aplicabilitatea potent,iala aI unei reguli pe mai multe subs, iruriI mai multor reguli pe acelas, i subs, ir

I La un anumit moment, aplicarea propriu-zisa a uneisingure reguli asupra unui singur subs, ir

I Nedeterminism inerent, ce trebuie rezolvat

I Convent,ie:

I aplicarea primei reguli aplicabile, în ordinea definirii,I asupra celui mai din stânga subs, ir asupra careia este

aplicabila

419 / 423

Page 1055: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aplicabilitate vs. aplicare

I Aplicabilitatea potent,iala aI unei reguli pe mai multe subs, iruriI mai multor reguli pe acelas, i subs, ir

I La un anumit moment, aplicarea propriu-zisa a uneisingure reguli asupra unui singur subs, ir

I Nedeterminism inerent, ce trebuie rezolvat

I Convent,ie:I aplicarea primei reguli aplicabile, în ordinea definirii,

I asupra celui mai din stânga subs, ir asupra careia esteaplicabila

419 / 423

Page 1056: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Aplicabilitate vs. aplicare

I Aplicabilitatea potent,iala aI unei reguli pe mai multe subs, iruriI mai multor reguli pe acelas, i subs, ir

I La un anumit moment, aplicarea propriu-zisa a uneisingure reguli asupra unui singur subs, ir

I Nedeterminism inerent, ce trebuie rezolvat

I Convent,ie:I aplicarea primei reguli aplicabile, în ordinea definirii,I asupra celui mai din stânga subs, ir asupra careia este

aplicabila

419 / 423

Page 1057: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Unitatea de control I

S

Regula 1

...

Regula k

prima regula aplicabila

Aplicarea regulii

...

Regula n

420 / 423

Page 1058: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Unitatea de control II

I Analogie cu o sita pe mai multe nivele, ce corespundregulilor

I Aplicabilitatea testata secvent,ial

I Etape:

1. determinarea primei reguli aplicabile

2. aplicarea acesteia

3. actualizarea RD

4. salt la pasul 1

421 / 423

Page 1059: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Inversarea intrarii

Ideea: mutarea pe rând, a fiecarui element în pozit,iacorespunzatoare, prin interschimbarea elementeloradiacente

1 Reverse(A); A g1, g2;

2 ag1g2 -> g2ag1;

3 ag1 -> bg1;

4 abg1 -> g1a;

5 a -> .;

6 -> a;

7 end

DOP

6−→ aDOP2−→ OaDP

2−→ OPaD3−→ OPbD

6−→ aOPbD2−→ PaObD

3−→ PbObD6−→ aPbObD

3−→ bPbObD6−→ abPbObD

4−→ PabObD4−→ POabD

4−→ PODa5−→ .

422 / 423

Page 1060: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Inversarea intrarii

Ideea: mutarea pe rând, a fiecarui element în pozit,iacorespunzatoare, prin interschimbarea elementeloradiacente

1 Reverse(A); A g1, g2;

2 ag1g2 -> g2ag1;

3 ag1 -> bg1;

4 abg1 -> g1a;

5 a -> .;

6 -> a;

7 end

DOP6−→ aDOP

2−→ OaDP2−→ OPaD

3−→ OPbD6−→ aOPbD

2−→ PaObD3−→ PbObD

6−→ aPbObD3−→ bPbObD

6−→ abPbObD4−→ PabObD

4−→ POabD4−→ PODa

5−→ .

422 / 423

Page 1061: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Inversarea intrarii

Ideea: mutarea pe rând, a fiecarui element în pozit,iacorespunzatoare, prin interschimbarea elementeloradiacente

1 Reverse(A); A g1, g2;

2 ag1g2 -> g2ag1;

3 ag1 -> bg1;

4 abg1 -> g1a;

5 a -> .;

6 -> a;

7 end

DOP6−→ aDOP

2−→ OaDP

2−→ OPaD3−→ OPbD

6−→ aOPbD2−→ PaObD

3−→ PbObD6−→ aPbObD

3−→ bPbObD6−→ abPbObD

4−→ PabObD4−→ POabD

4−→ PODa5−→ .

422 / 423

Page 1062: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Inversarea intrarii

Ideea: mutarea pe rând, a fiecarui element în pozit,iacorespunzatoare, prin interschimbarea elementeloradiacente

1 Reverse(A); A g1, g2;

2 ag1g2 -> g2ag1;

3 ag1 -> bg1;

4 abg1 -> g1a;

5 a -> .;

6 -> a;

7 end

DOP6−→ aDOP

2−→ OaDP2−→ OPaD

3−→ OPbD6−→ aOPbD

2−→ PaObD3−→ PbObD

6−→ aPbObD3−→ bPbObD

6−→ abPbObD4−→ PabObD

4−→ POabD4−→ PODa

5−→ .

422 / 423

Page 1063: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Inversarea intrarii

Ideea: mutarea pe rând, a fiecarui element în pozit,iacorespunzatoare, prin interschimbarea elementeloradiacente

1 Reverse(A); A g1, g2;

2 ag1g2 -> g2ag1;

3 ag1 -> bg1;

4 abg1 -> g1a;

5 a -> .;

6 -> a;

7 end

DOP6−→ aDOP

2−→ OaDP2−→ OPaD

3−→ OPbD

6−→ aOPbD2−→ PaObD

3−→ PbObD6−→ aPbObD

3−→ bPbObD6−→ abPbObD

4−→ PabObD4−→ POabD

4−→ PODa5−→ .

422 / 423

Page 1064: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Inversarea intrarii

Ideea: mutarea pe rând, a fiecarui element în pozit,iacorespunzatoare, prin interschimbarea elementeloradiacente

1 Reverse(A); A g1, g2;

2 ag1g2 -> g2ag1;

3 ag1 -> bg1;

4 abg1 -> g1a;

5 a -> .;

6 -> a;

7 end

DOP6−→ aDOP

2−→ OaDP2−→ OPaD

3−→ OPbD6−→ aOPbD

2−→ PaObD3−→ PbObD

6−→ aPbObD3−→ bPbObD

6−→ abPbObD4−→ PabObD

4−→ POabD4−→ PODa

5−→ .

422 / 423

Page 1065: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Inversarea intrarii

Ideea: mutarea pe rând, a fiecarui element în pozit,iacorespunzatoare, prin interschimbarea elementeloradiacente

1 Reverse(A); A g1, g2;

2 ag1g2 -> g2ag1;

3 ag1 -> bg1;

4 abg1 -> g1a;

5 a -> .;

6 -> a;

7 end

DOP6−→ aDOP

2−→ OaDP2−→ OPaD

3−→ OPbD6−→ aOPbD

2−→ PaObD

3−→ PbObD6−→ aPbObD

3−→ bPbObD6−→ abPbObD

4−→ PabObD4−→ POabD

4−→ PODa5−→ .

422 / 423

Page 1066: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Inversarea intrarii

Ideea: mutarea pe rând, a fiecarui element în pozit,iacorespunzatoare, prin interschimbarea elementeloradiacente

1 Reverse(A); A g1, g2;

2 ag1g2 -> g2ag1;

3 ag1 -> bg1;

4 abg1 -> g1a;

5 a -> .;

6 -> a;

7 end

DOP6−→ aDOP

2−→ OaDP2−→ OPaD

3−→ OPbD6−→ aOPbD

2−→ PaObD3−→ PbObD

6−→ aPbObD3−→ bPbObD

6−→ abPbObD4−→ PabObD

4−→ POabD4−→ PODa

5−→ .

422 / 423

Page 1067: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Inversarea intrarii

Ideea: mutarea pe rând, a fiecarui element în pozit,iacorespunzatoare, prin interschimbarea elementeloradiacente

1 Reverse(A); A g1, g2;

2 ag1g2 -> g2ag1;

3 ag1 -> bg1;

4 abg1 -> g1a;

5 a -> .;

6 -> a;

7 end

DOP6−→ aDOP

2−→ OaDP2−→ OPaD

3−→ OPbD6−→ aOPbD

2−→ PaObD3−→ PbObD

6−→ aPbObD

3−→ bPbObD6−→ abPbObD

4−→ PabObD4−→ POabD

4−→ PODa5−→ .

422 / 423

Page 1068: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Inversarea intrarii

Ideea: mutarea pe rând, a fiecarui element în pozit,iacorespunzatoare, prin interschimbarea elementeloradiacente

1 Reverse(A); A g1, g2;

2 ag1g2 -> g2ag1;

3 ag1 -> bg1;

4 abg1 -> g1a;

5 a -> .;

6 -> a;

7 end

DOP6−→ aDOP

2−→ OaDP2−→ OPaD

3−→ OPbD6−→ aOPbD

2−→ PaObD3−→ PbObD

6−→ aPbObD3−→ bPbObD

6−→ abPbObD4−→ PabObD

4−→ POabD4−→ PODa

5−→ .

422 / 423

Page 1069: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Inversarea intrarii

Ideea: mutarea pe rând, a fiecarui element în pozit,iacorespunzatoare, prin interschimbarea elementeloradiacente

1 Reverse(A); A g1, g2;

2 ag1g2 -> g2ag1;

3 ag1 -> bg1;

4 abg1 -> g1a;

5 a -> .;

6 -> a;

7 end

DOP6−→ aDOP

2−→ OaDP2−→ OPaD

3−→ OPbD6−→ aOPbD

2−→ PaObD3−→ PbObD

6−→ aPbObD3−→ bPbObD

6−→ abPbObD

4−→ PabObD4−→ POabD

4−→ PODa5−→ .

422 / 423

Page 1070: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Inversarea intrarii

Ideea: mutarea pe rând, a fiecarui element în pozit,iacorespunzatoare, prin interschimbarea elementeloradiacente

1 Reverse(A); A g1, g2;

2 ag1g2 -> g2ag1;

3 ag1 -> bg1;

4 abg1 -> g1a;

5 a -> .;

6 -> a;

7 end

DOP6−→ aDOP

2−→ OaDP2−→ OPaD

3−→ OPbD6−→ aOPbD

2−→ PaObD3−→ PbObD

6−→ aPbObD3−→ bPbObD

6−→ abPbObD4−→ PabObD

4−→ POabD4−→ PODa

5−→ .

422 / 423

Page 1071: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Inversarea intrarii

Ideea: mutarea pe rând, a fiecarui element în pozit,iacorespunzatoare, prin interschimbarea elementeloradiacente

1 Reverse(A); A g1, g2;

2 ag1g2 -> g2ag1;

3 ag1 -> bg1;

4 abg1 -> g1a;

5 a -> .;

6 -> a;

7 end

DOP6−→ aDOP

2−→ OaDP2−→ OPaD

3−→ OPbD6−→ aOPbD

2−→ PaObD3−→ PbObD

6−→ aPbObD3−→ bPbObD

6−→ abPbObD4−→ PabObD

4−→ POabD

4−→ PODa5−→ .

422 / 423

Page 1072: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Inversarea intrarii

Ideea: mutarea pe rând, a fiecarui element în pozit,iacorespunzatoare, prin interschimbarea elementeloradiacente

1 Reverse(A); A g1, g2;

2 ag1g2 -> g2ag1;

3 ag1 -> bg1;

4 abg1 -> g1a;

5 a -> .;

6 -> a;

7 end

DOP6−→ aDOP

2−→ OaDP2−→ OPaD

3−→ OPbD6−→ aOPbD

2−→ PaObD3−→ PbObD

6−→ aPbObD3−→ bPbObD

6−→ abPbObD4−→ PabObD

4−→ POabD4−→ PODa

5−→ .

422 / 423

Page 1073: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Inversarea intrarii

Ideea: mutarea pe rând, a fiecarui element în pozit,iacorespunzatoare, prin interschimbarea elementeloradiacente

1 Reverse(A); A g1, g2;

2 ag1g2 -> g2ag1;

3 ag1 -> bg1;

4 abg1 -> g1a;

5 a -> .;

6 -> a;

7 end

DOP6−→ aDOP

2−→ OaDP2−→ OPaD

3−→ OPbD6−→ aOPbD

2−→ PaObD3−→ PbObD

6−→ aPbObD3−→ bPbObD

6−→ abPbObD4−→ PabObD

4−→ POabD4−→ PODa

5−→ .

422 / 423

Page 1074: elf.cs.pub.ro · 2020-02-17 · Abordare imperativa˘ Modelul Mas, ina Turing::: b b a ::: Banda de intrare/ies, ire s 1 s 0 s 2 s 3 ... sn Unitate de control (depoziteaza starea)˘

Rezumat

Mas, ina Markov: model de calculabilitate,bazat pe identificari spontane de s, abloane

s, i pe substitut,ie

423 / 423