1. Scrieti o functie care primeste o lista de String
-uri si interschimba primul caracter cu al patrulea. Exemplu:
repl ["Matei", "Mihai", "George"] = ["eatMi", "aihMi", "reoGge"]
2. Scrieti un predicat care primeste o lista de liste imbricate, si construieste o lista ne-imbricata cu aceleasi elemente. Exemplu:
?- flat([[a,b], [c], [[[d]]], e],R). R = [a,b,c,d,e].
3. Dati un exemplu de lambda expresie reductibila, care produce aceeasi secventa de reduceri, atunci cand este evaluata prin strategia normala si prin cea aplicativa.
4. Scrieti o functie in Haskell care primeste o matrice m
si un intreg i
si intoarce coloana i
din matrice, sub forma unei liste.
5. Fie urmatorul cod in Haskell care codifica formule boolene:
data CNF = Var Bool | And CNF CNF | Or CNF CNF | Not CNF eval (Var x) = x eval (And f f') = (eval f) && (eval f') eval (Or f f') = (eval f) || (eval f') eval (Not f) = not (eval f)
Modificati codul de mai sus (si implementarea lui eval
) astfel incat arbori precum:
And / \ And True / \ False True
sa poata fi reprezentati folosind un singur nod cu mai multi copii:
And / | \ False True True
6. Scrieti un predicat p(X,K,Y)
care construieste toate submultimile de dimensiune K
formate cu elemente din X
.