Exercițiul 1: Ce face funcția ?
Când scriem cod, trebuie să putem urmări ce face. Astfel putem arăta fie că el face ce trebuie, fie să găsim unde e greșeala.
Pentru următoarele două funcții argumentați cât mai riguros și convingător (ideal: prin inducție după numărul de elemente al listei) ce rezultat produc.
let rec what1 = function [] -> [] h :: t -> h :: what1 t let what2 lst = let rec w2 r = function [] -> [] h :: t -> w2 (h :: r) t in w2 [] lst
Exercițiul 2:
Scrieți o funcție care ia ca parametri o listă și un element și returnează
lista în care elementul e plasat după toate elementele listei inițiale.
Implementați funcția
a) recursiv
b) folosind List.fold_right
Exercițiul 3 (opțional)
Scrieți o funcție care returnează lista tuturor numerelor prime
cel mult egale cu parametrul întreg n.
Scrieți întâi o funcție ajutătoare care ia un număr și o listă de numere (ordonate crescător) și care determină dacă numărul se împarte la vreunul din
elementele listei.
(Dacă știți că lista e ordonată crescător, vă puteți opri și înainte de sfârșitul listei. Când?)
Scrieți apoi funcția cerută, verificând pe rând numerele în ordine crescătoare, și acumulând într-o listă (parametru suplimentar) toate numerele prime găsite.