% illustration de la recherche dans un dictionnaire % qui sert aussi d'insertion cherche(Cle,dic(Cle,Valeur,_,_),Valeur):-!. cherche(Cle,dic(Cle1,_,G,_),Valeur):-Cle @=< Cle1,!, cherche(Cle,G,Valeur). cherche(Cle,dic(_,_,_,D),Valeur):-cherche(Cle,D,Valeur). % test du prédicat suivant sur l'insertion d'une liste de couples test([],_). test([(C,Val)|Xs],D):-cherche(C,D,Val),test(Xs,D). /* exemples de sortie % construction du dictionnaire à partir d'entrées | ?- test([(b,2),(a,1),(c,3)],D). D = dic(b,2,dic(a,1,_A,_B),dic(c,3,_C,_D)) ? yes % recherche d'une valeur a l'aide d'une variable non-instanciée | ?- test([(b,2),(a,1),(c,3),(c,C)],D). C = 3, D = dic(b,2,dic(a,1,_A,_B),dic(c,3,_C,_D)) ? yes % on peut même mettre des recherches en attente !!! | ?- test([(b,2),(c,C),(a,1),(c,3)],D). C = 3, D = dic(b,2,dic(a,1,_A,_B),dic(c,3,_C,_D)) ? */