This is an old revision of the document!
Evaluare expresii lambda
Scopul laboratorului:
- obișnuirea studenților cu calculul lambda:
- ce e o expresie
- ce sunt variabilele libere/legate
- cum se evaluează o expresie
- implementarea unei aplicații practice de evaluare a expresiilor lambda (în Haskell)
Calcul lambda
Calculul lambda este un model computațional (echivalent dpv al expresivității cu Mașina Turing) în care computația este exprimată ca o serie succesivă de aplicări de funcții, i.e. substituții de variabile. Calculul lambda are la bază expresii lambda și reguli de transformare a acestora.
Expresii lambda
O expresie lambda are trei forme posibile:
- variabilă
- $ x$ - unde $ x$ este un nume/simbol
- abstracțiefuncție * $\lambda x . E$ - unde $ x$ este un nume/simbol, iar $ E$ este o expresie lambda * aplicație**
- $(E_1\ E_2)$ - unde $ E_1$ și $ E_2$ sunt expresii lambda
Variabilele modelează valori.
Abstracțiile de forma $\lambda x.E$ modelează funcții anonime cu un singur argument formal $ x$, și corpul $ E$.
Aplicațiile de forma $(E_1\ E_2)$ modelează aplicarea expresiei $ E_1$ peste argumentul concret $ E_2$.
Mai multe informații găsiți aici.
Exemple
$ y$
$\lambda x.x$
$(\lambda x.x\ y)$
$((\lambda x.\lambda y.x\ z)\ \lambda x.x)$
Evaluare
Exerciții
TODO
Recommended Reading
TODO