Bonjour a tous, bon tout d'abord a avant de venir vous voir j'ai pas mal cherché et je n'ai pas trouver de réponse claire a mon problème.
Le voici, j'essaye de filtrer sur deux liste en meme temps, liste du type
('a,'b)list et ('c,'d)list. En gros je fais un parcoure de mes deux listes a la fois . J'ai obligation de le faire en récursif. Le soucis ne viens pas de 'largo (enfin peut être que mon alto est bidon mais ça je me débrouillerais ) ,mais vraiment de l'écriture.
Voici mon code
Et voici la réponse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 let rec produit f1 f2 = match f1 f2 with | [], _ | _,[] -> failwith "liste vide" | (x,y)::[],(a,b)::[] -> ((x,a),(y,b))::[] | (x,y)::[],(a,b)::m -> ((x,a),(y,b)):: produit f1 m | (x,y)::l,(a,b)::[] -> ((x,a),(y,b)):: produit l f2 | (x,y)::l,(a,b)::m -> ((x,a),(y,b)):: produit f1 m ;;
La ligne 64 c'est celle ou il y a , et le problème se trouve avec f2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 File "listFonction.ml", line 64, characters 52-53: Error: This expression has type ('a * 'b) list but an expression was expected of type ('c * 'd) list -> ('a * 'b) list * ('c * 'd) list
Code : Sélectionner tout - Visualiser dans une fenêtre à part | (x,y)::l,(a,b)::[] -> ((x,a),(y,b)):: produit l f2
Voila je continu a chercher mais je ne vois comment il peut attendre ce qu'il attend a la place de f2.
En vous remerciant de votre attention et de vos possibles réponses.
Bonne soirée.
Partager