Je suis en train de mettre en œuvre un ordre en fonction traversal en utilisant une version modifiée de fois en Haskell:Faire un dans l'ordre traversal sur un arbre binaire en Haskell utilisant un pli
foldT :: (u -> u -> u) -> (a -> u) -> Tree a -> u
foldT f g (Tip a) = g a
foldT f g (Node l r) = f (foldT f g l) (foldT f g r)
Mais je suis se coincer avec la façon de mettre en œuvre la fonction, ma tentative est:
inorderT :: Ord a => Tree a -> [a]
inorderT = foldT (\x l r -> l ++ x ++ r) []
Toute aide est grandement appréciée!
Messages d'erreur:
Couldn't match expected type ‘[a]’ with actual type ‘[a] -> [a]’
• In the first argument of ‘foldT’, namely
‘(\ x l r -> l ++ x ++ r)’
In the expression: foldT (\ x l r -> l ++ x ++ r) []
In an equation for ‘inorderT’:
inorderT = foldT (\ x l r -> l ++ x ++ r) []
• Relevant bindings include
inorderT :: Tree a -> [a]
Quel message d'erreur obtenez-vous? Et que pensez-vous que le message d'erreur signifie? – luqui
J'ai mis à jour ma question pour inclure le message d'erreur, il doit y avoir un problème avec les types mais je ne suis pas sûr de savoir comment l'aborder – newbie
Maintenant, faites une supposition quant à ce que signifie le message d'erreur. Cela vous indique une section spécifique de votre code - qu'est-ce qui pourrait ne pas fonctionner? Postez votre estimation. (Montrer un effort comme ça vous aide à comprendre et à aimer les gens pour vous aider car il montre que vous y avez réfléchi) – luqui