let rec find_pos (key: 'key) (map: ('key * 'data) list)
  : int =
    begin match map with
    | [] -> 0
    | (k, _) :: _ when k = key -> 0
    | (_, _) :: map1 -> 1 + find_pos key map1
    end