(*TD des listes *) (** repeat @param un enter n et un flottant x @return la liste de longueur n ne contenant que des x *) let rec repeat x n = match n with 0 -> [] | x::(repeat x (n-1));; (** nb_occ @param x, un élément, l, une liste @return le nombre d'occurences de x dans la liste l *) let rec nb_occ x l = match l with [] -> 0 | t::q -> if t=x then 1+(nb_occ q) else nb_occ q;; (** last @param liste l @return le dernier élément de l *) let rec last l = match l with [] -> failwith "echec : liste vide" | [a] -> a | t::q -> last q;; (** is-increasing @param une liste l @return un booléen TRUE si la liste est croissante, FALSE sinon *) let rec is_increasing l = match l with [] -> 1 | [a] -> 1 | t::s::q -> if ((is_increasing s::q)=1 and t 0 | t::q -> 1+len q;; (**somme @param une liste l @return la somme des éléments de l *) let rec somme l = match l with [] -> 0. | t::q -> t+.somme q;; (**moyenne @param une liste l @return la moyenne de l *) let moyenne l = (somme l)/.(float_of_int(len l));; (** sqrt @param entier x @return le carré de x *) let sqrt=x*x;; let mylist=[3;12;3;40;6;4;6;0];; let carres=map sqrt mylist;; let doubles=map *2 myslit;; (**somme2 @param l une liste d'entiers @return la somme des éléments de la liste *) let somme2 l = List.fold_left + l 0;; (**lg @param l une liste @return le nombre d'éléments de l *) let lg l = List.fold_left +1 l 0;; (**pairs @param l une liste @return le nombre d'éléments pairs de la liste *) let pairs l=(lg l)-(somme2 (map %2 l));;