(* Implementation avec listes *) (* Exercice 1 *) (* 1. *) type ('a, 'b) dict = ('a * 'b) list (* 2. *) let dict_empty = [] (* Exercice 2 *) (* 3. *) let rec dict_add key value dict = let rec aux dict ndict = match dict with [] -> (key, value)::ndict | (k, y)::d -> aux d (if k = key then (k, value) :: ndict else (k, y) :: ndict) in aux dict [] (* Exercice 3 *) (* 4. *) let rec dict_find key dict = match dict with [] -> None | (k, value)::l -> if k = key then Some value else dict_find key l (* Exercice 4 *) (* 5. *) let dict_remove key dict = let rec aux dict ndict = match dict with [] -> ndict | (k, y)::d -> aux d (if k = key then ndict else (k,y) :: ndict) in aux dict []