le code suivant me retourne une erreur de syntaxe; le problème étant que l'interpréteur ne m'indique pas à quel niveau...du coup c'est pas très clair tout ça =)
De plus, c'est la première fois que j'essaie de définir une fonction dans une autre il se peut donc que ce soit lié.
- Code: Tout sélectionner
let rec arbreAncetrePossibleLv3 = fun l ->
let rec read = fun l1 -> fun l2 ->
match(l1,l2) with
| ([],[]) -> []
| ([],x::lbis) -> x::(read [] lbis)
| (x::lbis,[]) -> x::(read lbis [])
| (x1::lbis1,x2::lbis2) -> x1::x2::(read lbis1 lbis2))
in
match l with
| [] -> []
| a::l2 -> match a with
|(b,i,c) -> read(arbreAncetrePossibleLv2 (pouvAncetrePossible (pouvoir(feuilleToCouple b))) (pouvoir(feuilleToCouple b)))
(arbreAncetrePossibleLv2 (pouvAncetrePossible (pouvoir(feuilleToCouple c))) (pouvoir(feuilleToCouple c)))
::(arbreAncetrePossibleLv3 l2);;
L'idée c'est que l'on travaille sur une liste d'arbre.
Pour chaque élément de ma liste, je veux créer la liste des sous arbre gauche et droite possible avec arbreAncetrePossibleLv2. Du coup, je me retrouve avec 2 sous liste que je dois aussi parcourir.
D'où l'idée de la fonction read en interne qui est censé parcourir les deux sous listes
Bon, clairement, je suis pas sûr du tout de mon algo ni quoi que ce soit, je réfléchis d'ailleurs à une façon peut être plus simple de le faire; cependant, j'aimerais quand même comprendre ce qui provoque l'erreur de syntaxe dans ce code là...
Voici la signature de Lv2 si cela peut aider
- Code: Tout sélectionner
val arbreAncetrePossibleLv2 :
('a * 'a) list -> 'a -> (string * 'a) arbre list =
Merci d'avance !