Université Paris 6 Licence d'informatique | Module de Programmation Année 2000-2001 |
---|
let f = function m -> function n -> let res = g (m * n) in (((h res) = res), res);;On cherche quelles sont les hypothèses minimales à faire sur Env pour que cette déclaration soit acceptable par le système CAML, en donnant à f le type le plus général (autrement dit, le plus polymorphe) possible.
let f = function (x,z,y) -> let r = ref (!z) in r := !r + 1; y := !y + 1 ; if x then z := !r else failwith " erreur";;
T
de listes de couples (clef, valeur
associée), appelée liste de conflits.
hash
dite ``fonction de hachage'' permettant
d'associer un indice entier à toute clef.
c
est
faite ainsi:
hash c
est une liste vide, aucune valeur n'est associée à la
clef c
(c, v)
et on retourne v
.
hash: 'a -> int
, proposez
un type de données ('a, 'b) hash_table
permettant de
représenter les tables de hachage de valeurs 'a * 'b
.
creer
de type int -> 'a hash_table
telle que creer n
retourne une table de hachage de taille n
.
ajout
telle que
ajout table clef valeur
ajoute le couple (clef, valeur)
dans la liste contenue à l'indice
table.(hash (clef))
. On
décide ici que l'élement est ajouté en tête de la liste.
rechercher
telle que
rechercher table clef
retourne la valeur associée à une
clef
. Si la clef apparaît plusieurs fois, vous retournerez la
dernière valeur entrée. Cette fonction lèvera
l'exception Non_trouve
si aucune valeur n'est associée à une
clef donnée.
liste_de_table
permettant de convertir une
table en une liste d'associations.
iterer_table
telle que
iterer_table f table
exécute la fonction f
pour tous les
éléments d'une table de hachage.
Ce document a été traduit de LATEX par HEVEA.