Examen PP

(L/P) Reduceti urmatoarea lambda-expresie folosind strategiile normala si aplicativa.

(λx.(x x) (λx.(x y) λy.y))

(L/P) De cate ori se satisface scopul ?- p(X). unde:

p(a).
q(a).
q(b).
r(a).
r(b).
p(X) :- q(X), !, r(X).

Justificati.

(E1) Scrieti o functie in Haskell care primeste o lista de String-uri si elimina toate caracterele uppercase din acestea, cu exceptia primelor caractere din sir. (Exemplu f [“Matei”, “MIHai”, “AnA”] = [“Matei”, “Mai”, “An”]

(E2) Definiti un TDA care sa codifice valori de tip fractie, ce sunt formate dintr-un numarator si un numitor nenul, precum si o valoare speciala, pentru situatia in care numitorul este nul. Scrieti o functie ce primeste o lista de perechi de intregi, si le converteste la valori de tip fractie.

(E3) Scrieti o functie care extrage o lista cu toate valorile de pe digonala secundara a unei matrici patratice. Folositi functii de ordin superior.