J'ai posté une question aujourd'hui et quelqu'un a aidé mais son code ne fonctionne pas. Ceci est le lien au poste link to the postBesoin d'aide pour corriger un petit bug
Quand je lance son code, je reçois une erreur: "parse error sur l'entrée` '"
Le". " après que "\ t" provoque l'erreur. Suis nouveau dans Haskell donc je ne sais pas pourquoi il cause l'erreur.
Besoin d'aide pour résoudre ce problème.
grâce
MISE À JOUR
je reçois erreur lorsque je charge le code. c'est l'erreur:
Couldn't match expected type `a -> Bool'
against inferred type `[Bool]'
In the first argument of `any', namely
`(map (\ t -> contains t b) c)'
In the second argument of `(||)', namely
`any (map (\ t -> contains t b) c)'
In the expression: a == b || any (map (\ t -> contains t b) c)
besoin d'aide pour le réparer.
grâce
MISE À JOUR
quand je lance le code après les modifications:
data Tree a = Leaf a | Branch a [(Tree a)] deriving (Show)
contains :: Tree a -> a -> Bool
contains (Leaf a) b = a == b
contains (Branch a c) b = a == b or (map (\ t -> contains t b) c)
c'est l'erreur que je reçois maintenant:
Occurs check: cannot construct the infinite type:
a = ([Bool] -> Bool) -> [Bool] -> a
When generalising the type(s) for `contains'
MISE À JOUR 3
S'il vous plaît c'est mon code et pourtant je reçois encore une erreur après avoir fait tous les changements. Je ne comprends pas:
data Tree a = Leaf a | Branch a [(Tree a)] deriving (Show)
contains :: Eq a => Tree a -> a -> Bool
contains (Leaf a) b = a == b
contains (Branch a c) b = a == b || (map (\t -> contains t b) c)
Le booléen ne fonctionne pas sur mon système, donc je dois utiliser Bool. Maintenant, c'est l'erreur que je reçois:
Couldn't match expected type `Bool' against inferred type `[Bool]'
In the second argument of `(||)', namely
`(map (\ t -> contains t b) c)'
In the expression: a == b || (map (\ t -> contains t b) c)
In the definition of `contains':
contains (Branch a c) b = a == b || (map (\ t -> contains t b) c)
Veuillez exécuter le code ci-dessus si cela fonctionne. Ou peut-être qu'il me manque quelque chose quelque part. Je tiens à vous remercier pour votre temps. Je vous en suis reconnaissant.
grâce
C'était une faute de frappe, methinks ('\ t. (...)' n'est pas valide Haskell, '\ t -> (...)' est - remplacer l'ellipse avec quelque chose de valide, de bien sûr) et il l'a déjà réparé. – delnan