Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
pp:llambdacalc [2019/04/08 09:22] dmihai |
pp:llambdacalc [2020/02/05 15:50] (current) dmihai [Exerciții] |
||
|---|---|---|---|
| Line 18: | Line 18: | ||
| * **variabilă** | * **variabilă** | ||
| * $ x$ - unde $ x$ este un nume/simbol | * $ x$ - unde $ x$ este un nume/simbol | ||
| - | * **abstracție**/**funcție** | + | * **abstracție** / **funcție** |
| * $\lambda x . E$ - unde $ x$ este un nume/simbol, iar $ E$ este o expresie lambda | * $\lambda x . E$ - unde $ x$ este un nume/simbol, iar $ E$ este o expresie lambda | ||
| * **aplicație** | * **aplicație** | ||
| Line 47: | Line 47: | ||
| ==== Evaluare ==== | ==== Evaluare ==== | ||
| + | Evaluarea unei expresii lambda constă într-o serie succesivă de transformări (redenumiri de variabile, substituții de variabile cu alte expresii). Un pas de evaluare constă într-o singură [[https://en.wikipedia.org/wiki/Lambda_calculus#%CE%B2-reduction|substituție de variabile]] (posibil cu [[https://en.wikipedia.org/wiki/Lambda_calculus#%CE%B1-conversion|redenumire]]). Aplicând repetat pașii de evaluare putem obține un rezultat. Găsiți mai multe informații despre evaluare [[:pp:lambda#the_semantics_of_the_lambda_calculus|aici]]. | ||
| + | O //strategie de evaluare// este un set de reguli de a aplica substituții. Distingem între **evaluare aplicativă** și **evaluare normală**. Informal, evaluarea aplicativă evaluează mai întâi argumentele, apoi expresia cu totul, iar evaluarea normală evaluează întâi expresia, pasând funcțiilor argumente neevaluate. | ||
| + | <note> | ||
| + | Nu orice expresii lambda poate fi evaluată până la capăt. Pentru unele expresii, evaluarea poate cicla. | ||
| + | |||
| + | De asemenea, există expresii pe care, deși o strategie de evaluare produce un rezultat, o altă strategie poate să cicleze. | ||
| + | </note> | ||
| + | |||
| + | Pentru definiții formale și exemple ale celor două strategii de evaluare, mai multe informații găsiți [[:pp:lambda#step_2_reduction_order_s|aici]]. | ||
| ===== Exerciții ===== | ===== Exerciții ===== | ||
| Line 72: | Line 81: | ||
| Urmăriți regulile de [[http://ocw.cs.pub.ro/ppcarte/doku.php?id=pp:lambda#the_semantics_of_the_lambda_calculus|aici]] și comentariile din cod. | Urmăriți regulile de [[http://ocw.cs.pub.ro/ppcarte/doku.php?id=pp:lambda#the_semantics_of_the_lambda_calculus|aici]] și comentariile din cod. | ||
| </note> | </note> | ||
| + | |||
| + | {{:pp:laborator_7_-_schelet.zip|Laborator 7 - Schelet}}\\ | ||