Salut tout ceci est ma première question ici, je suis très nouveau à Haskell et j'ai besoin de faire une fonction Haskell qui prend un arbre et retourne une liste des éléments dans son nœud dans une traversée de précommande mais Je n'arrive pas à le faire marcher.Traversée d'arbres avec Haskell
Ma définition d'arbres est la suivante:
data Tree a = Node a [Tree a] deriving Show
et la fonction de pré-commande est:
preorderTree :: Tree a -> [a]
preorderTree Empty = []
preorderTree (Node a l r) = a : (preorderTree l) ++ (preorderTree r)
En avance je vous remercie beaucoup pour votre aide :)
Eh bien, vous avez écrit 'Node' pour ne prendre que deux arguments, mais en correspondance motif sur trois. –
Vous avez la définition de données d'un arbre de roses mais une fonction qui semble attendre un arbre binaire. Si vous voulez que 'preorderTree' fonctionne pour votre type de données' Tree', jetez un œil à 'concatMap'. – Alec
Ce n'est pas votre première question puisque vous n'avez rien demandé. Vous n'avez également publié aucun message d'erreur. Étant donné que la traversée et la déclaration de données ne correspondent pas, il existe deux correctifs possibles. Le correctif correct n'est pas clair, j'ai donc voté pour fermer. N'hésitez pas à modifier la question. –