Bonsoir,

j'éprouve quelques difficulté à réaliser la fonction suivante

la fonction doit prendre deux listes de couples.
La fonction devra retourner une liste de couples tels quel le premier élément de la liste 1 est aussi un second élément de la liste 2.

Sauf que, je ne sais pas comment je peux m'en sortir pour sauvegarder mon résultat après chaque passage

Concrètement j'ai un truc de ce style

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
let rec composition = fun l1 -> fun l2 ->
	match l2 with
	| [] -> []
	| (a,b)::l22 -> if(appartient b l1) then  ...
					else composition l1 l22;;
avec appartient qui me permet de savoir si l'élément b apparaît en tant que premier élément de la liste de couple

en gros


appartient 1 [(2,1);(1,4)] renvoit true
appartient 1 [(2,1);(3,4)] renvoit false

Il me faudrait soit réussir à supprimer les éléments de l1 qui ne correspondent pas, soit reconstruire une liste de zéro mais sans changer l1 et l2 pour ne pas fausser le résultat final...et là en restant purement fonctionnel je vois pas du tout comment je peux faire ça...