This is an old revision of the document!


1. Scrieti o functie in Haskell care primeste doua functii $ f$ , $ g$ si un numar natural $ k$ si verifica daca functiile au aceeasi valoare pe intervalul de numere naturale $ 0, \ldots , k$ .

2. Scrieti un predicat in Prolog care primeste un numar k si o lista L si implementeaza rotatia cu k pozitii a listei L. Rotatia listei [1,2,3,4,5,6,7,8,9] cu 3 pozitii este [4,5,6,7,8,9,1,2,3].

3. Dati un exemplu de lambda-expresie reductibila care poate contine o secventa $ e \Rightarrow e_1 \Rightarrow \ldots \Rightarrow e_n \Rightarrow e$ de reduceri.

4. Folosind tipul de date Query, definiti o interogare care selecteaza ocupatia pentru toti utilizatorii care au varsta intre 15 si 45 sau au numele formate din cuvinte care incep cu litera Q sau litera F.

5. Definiti tipul de date Prop, care codifica propozitii dupa urmatoarele reguli:

  • o propozitie este formata dintr-un subiect si un predicat
  • un subiect poate fi un nume propriu sau un nume propriu urmat de un adjectiv.
  • un nume propriu poate fi unul sau mai multe string-uri care incep cu o majuscula.
  • un predicat poate fi unul din string-urile: priveste, alearga, mananca.
  • un adjectiv poate fi orice string.

Scrieti o functie care primeste un String, si intoarce un obiect Prop. Puteti presupune ca string-ul este format corect.

6. Scrieti un predicat in Prolog care primeste o valoare naturala K si o lista L si intoarce o lista cu toate sub-listele de dimensiune K formate cu elemente din L, si pastrand ordinea acestora din L.