compte: 'a * 'a lits → int

# let rec compte (a,l)= if l=[]
  then 0
  else if a=hd(l)
  then 1+compte(a,tl(l))
  else compte(a,tl(l));;
val compte : 'a * 'a list -> int = <fun>
# compte(2,[5;-3;2;0;2]);;
- : int = 2

f1: int list → (int * int) list

# let rec f1 (l)= if l=[]
  then []
  else (2*hd(l),3*hd(l))::f1(tl(l));;
val f1 : int list -> (int * int) list = <fun>
# f1([5;3;-2;0;2]);;
- : (int * int) list = [(10, 15); (6, 9); (-4, -6); (0, 0); (4, 6)]

let rec colle_liste (l1,l2)= if l1=[]
then l2
else hd(l1)::colle_liste(tl(l1),l2);;

# let rec ajout_en_fin (x,l)=
if l=[]
then [x]
else hd(l)::ajout_en_fin(x,tl(l));;
      val ajout_en_fin : 'a * 'a list -> 'a list = <fun>

let rec inverse(l)= if l[]
then []
else colle_liste(inverse(tl(l)),hd(l)::[]);;

list_of_string : string → char list
string_of_list: char list → string

let rec list_of_string s= if String.length s=0
                    then [] 
                      else s.[0]::list_of_string(sub(s)(1)(length(s)-1));;

# let rec string_of_list l= if l=[]
then ""
else Char.escaped(hd(l))^string_of_list(tl(l));;        
val string_of_list : char list -> string = <fun>
# string_of_list(['a';'b';'c']);;
- : string = "abc"