Salut, je sais pas si quelqu'un peut m'aider pour cela, mais toute aide est toujours la bienvenue.
Je dois rendre un travail en informatique où le but est de créer un code en Caml qui permet de:
Définir les arbres binaires dont seules les feuilles sont étiquetées par des objets d'un certain
type 'a, un arbre est donc soit une feuille, soit un noeud dont les deux fils sont eux-même des
arbres. On définit alors récursivement avec une grande simplicité des fonctions simples comptant
les noeuds, les feuilles, la longueur de la plus grande branche, et le prédicat "isom" indiquant que
deux arbres ont même forme.
J'ai commencer à écrire ce code:
type 'a arbre = feuille of 'a | noeud of 'a arbre * 'a arbre ;;
let rec nbnoeuds = fun (feuille _) -> 1 | (noeud(a, b)) -> 1 + nbnoeuds(a)+nbnoeuds(b);;
let rec nbfeuilles = fun (feuille _) -> 1 | (noeud(a, b)) -> nbfeuilles(a)+nbfeuilles(b);;
let rec prof = fun (feuille _) -> 0 | (noeud (a, b)) -> 1 + max (prof a) (prof b);;
let rec isom = fun | (feuille _) (feuille _) -> true
| (noeud (ag, ad)) (noeud (bg, bd)) -> isom ag bg && isom ad bd
| _ _ -> false;;
type 'a arb = vide | noeud of ('a * 'a arb * 'a arb);;
MAIS JE BLOQUE A CE NIVEAU CAR QUAND J'ECRIT :
let rec verif p = fun | vide -> true | noeud(e, g, d) -> p e & verif p g & verif p d;;
J'OBTIENT CETTE ERREUR:
Entrée interactive:
>let rec verif p = fun | vide -> true | noeud(e, g, d) -> p e & verif p g & verif p d;;
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Tous les cas de ce filtrage curryfié n'ont pas la même longueur.
Donc je voulais savoir si quelqu'un pouvait m'aider là-dessus...

Merci d'avance !