1) Sa se scrie o functie in Scheme pentru calculul factorialului unui
numar natural. Sa se defineasca o varianta recursiva a
programului, apoi o varianta cu recursivitate pe coada, prin folosirea unui acumulator. 2) Sa se scrie o functie in Scheme pentru inversarea unei liste. Sa se defineasca o varianta recursiva a programului, apoi o varianta cu recursivitate pe coada, prin folosirea unui acumulator. 3) Sa se scrie o functie in Scheme pentru calculul reuniunii a doua multimi, apoi pentru intersectia, precum si pentru diferenta lor. Multimile sunt reprezentate sub forma de liste. 4) Sa se defineasa recursiv o functie STERGE cu doua argumente : un atom A si o lista L, care intoarce ca rezultat o noua lista in care toate aparitiile atomului A pe primul nivel al listei L au fost sterse. Exemplu : (sterge a (m a (m a))) intoarce (m (m a)) 5) Sa se defineasca o functie STERGETOT, care lucreaza ca si STERGE, dar elimina aparitiile atomului A situate pe orice nivel in lista L. Exemplu : (stergetot a (m a (m a))) intoarce (m (m)) 6) Sa se defineasca o functie recursiva in Scheme care sa elimine duplicatele dintr-o lista. Indicatie : Sa se defineasca o functie auxiliara care sa colecteze intr-o variabila lista elementelor intalnite in parcurgerea listei. 7) Sa se defineasca o functie recursiva in Scheme care sa liniarizeze o lista de liste. Exemplu : (liniarizare (((a b) c) (d e))) intoarce (a b c d e)