Bonjour,
j'aimerais comprendre pourquoi Caml me retourne ce message d'erreur ? List.hd n'est-il pas de type 'a ?
Bonjour,
j'aimerais comprendre pourquoi Caml me retourne ce message d'erreur ? List.hd n'est-il pas de type 'a ?
Bonjour,
Et bienvenue sur les forums de developpez.net
D'abord permet moi de réécrire ton code en n'utilisant pas les fonctions partielles que sont List.hd et List.tl, car, comme leur nom l'indique les fonctions partielles peuvent déclencher des erreurs à l'exécution.
Code OCaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 let rec couple a b = match a,b with (* ce filtrage est incomplet *) | [],[] -> failwith "couple" | [c],[d] -> [c;d] | ha::ta,hb::tb -> [ha;hb]::(couple ta tb);;
Je vais te proposer une version correctement typée :
Code OCaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 let rec couple a b = match a,b with (* ce filtrage est complet *) | [],l | l,[] -> l | [c],[d] -> [c;d] | ha::ta,hb::tb -> ha::hb::(couple ta tb);;
À ta charge de comprendre pourquoi celle-ci est correcte alors que la précédente ne l'est pas.
Par contre elle ne fait pas forcément exactement ce que tu voulais.
Là aussi, à toi de voir (ou de nous dire) ce que tu voulais exactement.
Cela se rapproche bien de ce que je voulais faire. Merci pour votre réponse
Je profite de ton arrivée sur nos forums pour rappeler à tous quelques consignes de bonne conduite :
- quand c'est on clique le bouton du même nom
- quand on est d'accord avec la réponse ou qu'on lui trouve une valeur ajoutée on clique
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager